diff options
40 files changed, 3185 insertions, 19 deletions
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/.classpath b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/.classpath new file mode 100644 index 00000000000..8a8f1668cdc --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/.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/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/.project b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/.project new file mode 100644 index 00000000000..304b424d61e --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/.project @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.cpp.codegen.tests</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>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest.launch b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest.launch new file mode 100644 index 00000000000..df2c9c8deec --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest.launch @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig"> +<booleanAttribute key="append.args" value="true"/> +<booleanAttribute key="askclear" value="false"/> +<booleanAttribute key="automaticAdd" value="true"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="[NONE]"/> +<booleanAttribute key="clearConfig" value="true"/> +<booleanAttribute key="clearws" value="true"/> +<booleanAttribute key="clearwslog" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/> +<booleanAttribute key="default" value="true"/> +<booleanAttribute key="includeOptional" value="true"/> +<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/CppCodegenTest.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> +<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> +<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> +<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.papyrus.cpp.codegen.tests.CppCodegenTest"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.cpp.codegen.tests"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea -XX:MaxPermSize=192M -Xmx512m"/> +<stringAttribute key="pde.version" value="3.3"/> +<stringAttribute key="product" value="org.eclipse.platform.ide"/> +<booleanAttribute key="run_in_ui_thread" value="true"/> +<booleanAttribute key="show_selected_only" value="false"/> +<booleanAttribute key="tracing" value="false"/> +<booleanAttribute key="useCustomFeatures" value="false"/> +<booleanAttribute key="useDefaultConfig" value="true"/> +<booleanAttribute key="useDefaultConfigArea" value="false"/> +<booleanAttribute key="useProduct" value="true"/> +</launchConfiguration> diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class8.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class8.cpp new file mode 100644 index 00000000000..eacc3508b50 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class8.cpp @@ -0,0 +1,43 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Package1_Class8_BODY + +/************************************************************ + Class8 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Package1/Class8.h" + +// Derived includes directives + +namespace Package1 { + +// static attributes (if any) + +/** + * + * @param iVal1 @param iVal2 @param cVal1 @param cVal2 @param this + */ +int Class8::operation1(int /*in*/iVal1, int /*in*/iVal2, char /*in*/cVal1, + char /*in*/cVal2) +{ + +} + +/** + * + * @param iVal1 + */ +void Class8::operation1(int /*in*/iVal1) +{ + +} + +} // of namespace Package1 + +/************************************************************ + End of Class8 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class8.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class8.h new file mode 100644 index 00000000000..a9ce8cc797f --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class8.h @@ -0,0 +1,64 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_PACKAGE1_CLASS8_H +#define CPPCODEGENTEST_PACKAGE1_CLASS8_H + +/************************************************************ + Class8 class header + ************************************************************/ + +#include "CppCodegenTest/Package1/Pkg_Package1.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +namespace Package1 { + +/************************************************************/ +/** + * + */ + +class Class8 +{ + +public: + Class8() : + defaultIValue(12) + { + } + + /** + * + */ + int defaultIValue; + + /** + * + * @param iVal1 @param iVal2 @param cVal1 @param cVal2 @param this + */ + int operation1(int /*in*/iVal1, int /*in*/iVal2 = 2, char /*in*/cVal1, + char /*in*/cVal2); + + /** + * + * @param iVal1 + */ + void operation1(int /*in*/iVal1); + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +} // of namespace Package1 + +/************************************************************ + End of Class8 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class9.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class9.cpp new file mode 100644 index 00000000000..e02f960c86d --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class9.cpp @@ -0,0 +1,51 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Package1_Class9_BODY + +/************************************************************ + Class9 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Package1/Class9.h" + +// Derived includes directives + +namespace Package1 { + +// static attributes (if any) + +/** + * + * @param + */ +int Class9::volatileIntOperation() +{ + +} + +/** + * Should not generate the 'register' keyword as it cannot be used in method signatures. + * @param + */ +int Class9::registerOperation() +{ + +} + +/** + * + * @param + */ +int Class9::externOperation() +{ + +} + +} // of namespace Package1 + +/************************************************************ + End of Class9 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class9.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class9.h new file mode 100644 index 00000000000..427cfa5b191 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Class9.h @@ -0,0 +1,79 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_PACKAGE1_CLASS9_H +#define CPPCODEGENTEST_PACKAGE1_CLASS9_H + +/************************************************************ + Class9 class header + ************************************************************/ + +#include "CppCodegenTest/Package1/Pkg_Package1.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +namespace Package1 { + +/************************************************************/ +/** + * + */ + +class Class9 +{ + +public: + Class9() : + externAttribute(3) + { + } + + /** + * + */ + int volatileAttribute; + + /** + * Should not generate 'register' keyword as 'register' only applies to properties declared within the scope of an operation. + */ + int registerAttribute; + + /** + * + * @param + */ + int volatileIntOperation(); + + /** + * Should not generate the 'register' keyword as it cannot be used in method signatures. + * @param + */ + int registerOperation(); + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/** + * + */ +int externAttribute; + +/** + * + * @param + */ +int externOperation(); + +/************************************************************/ + +/* Inline functions */ + +} // of namespace Package1 + +/************************************************************ + End of Class9 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Pkg_Package1.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Pkg_Package1.h new file mode 100644 index 00000000000..6fee268eb47 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/CppCodegenTest/Package1/Pkg_Package1.h @@ -0,0 +1,36 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef PKG_CPPCODEGENTEST_PACKAGE1 +#define PKG_CPPCODEGENTEST_PACKAGE1 + +/************************************************************ + Pkg_Package1 package header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#ifndef _IN_ +#define _IN_ +#endif +#ifndef _OUT_ +#define _OUT_ +#endif +#ifndef _INOUT_ +#define _INOUT_ +#endif + +/* Package dependency header include */ + +namespace Package1 { + +// Types defined within the package + +}// of namespace Package1 + +/************************************************************ + End of Pkg_Package1 package header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class1.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class1.cpp new file mode 100644 index 00000000000..e89d702b3f9 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class1.cpp @@ -0,0 +1,49 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class1_BODY + +/************************************************************ + Class1 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class1.h" + +// Derived includes directives + +// static attributes (if any) + +/** + * Assignment operator + * @param cSource @param this + */ +Class1& Class1::operator =(const Class1 /*in*/& cSource) { + if (this == &cSource) + return *this; + + iVal = cSource.iVal; + + return *this; +} + +/** + * Destructor + * + */ +Class1::~Class1() { + +} + +/** + * Copy constructor + * @param cSource + */ +Class1::Class1(const Class1 /*in*/& cSource) { + iVal = cSource.iVal; +} + +/************************************************************ + End of Class1 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class1.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class1.h new file mode 100644 index 00000000000..f6818875447 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class1.h @@ -0,0 +1,62 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS1_H +#define CPPCODEGENTEST_CLASS1_H + +/************************************************************ + Class1 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +/************************************************************/ +/** + * + */ + +class Class1 { + +public: + + /** + * Assignment operator + * @param cSource @param this + */ + Class1& operator =(const Class1 /*in*/& cSource); + + /** + * Destructor + * + */ + ~Class1(); + + /** + * Copy constructor + * @param cSource + */ + Class1(const Class1 /*in*/& cSource); + +private: + + /** + * + */ + int iVal; + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +/************************************************************ + End of Class1 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class2.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class2.cpp new file mode 100644 index 00000000000..2086e77728f --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class2.cpp @@ -0,0 +1,124 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class2_BODY + +/************************************************************ + Class2 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class2.h" + +// Derived includes directives + +// Include from Include declaration (body) +#include <string.h> +// End of Include stereotype (body) + +// static attributes (if any) + +/** + * Default constructor + * + */ +Class2::Class2() { + iVal1 = 0; + iVal2 = 0; + bVal = false; +} + +/** + * Constructor with parameters + * @param newIVal1 @param newIVal2 @param newBVal + */ +Class2::Class2(int /*in*/newIVal1, int /*in*/newIVal2, bool /*in*/newBVal) { + iVal1 = newIVal1; + iVal2 = newIVal2; + bVal = newBVal; +} + +/** + * Virtual method + * @param a @param b @param + */ +double Class2::virtualOp(double /*in*/a, double /*in*/b) { + return; +} + +/** + * Static method + * + */ +void Class2::staticOp() { + +} + +/** + * Friend method + * + */ +void Class2::friendOp() { + +} + +/** + * Non-static method + * + */ +void Class2::nonStaticOp() { + +} + +/** + * Method with in, out, inout, return parameters + * @param in @param out @param inout @param ret + */ +int Class2::paramsOp(int /*in*/in, int /*out*/* out, int /*inout*/* inout) { + +} + +/** + * Void Method + * @param + */ +void Class2::voidOp() { + +} + +/** + * + * @param newIVal1 + */ +void Class2::defaultValueOp(int /*in*/newIVal1) { + +} + +/** + * Virtual destructor + * + */ +Class2::~Class2() { + +} + +/** + * + * @param c1 @param + */ +Class1 Class2::classesOp(Class1 /*in*/c1) { + +} + +/** + * Const method + * + */ +void Class2::constOp() const { + std::cout << "I am a const method" << std::endl; +} + +/************************************************************ + End of Class2 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class2.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class2.h new file mode 100644 index 00000000000..047fb6e8bb4 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class2.h @@ -0,0 +1,153 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS2_H +#define CPPCODEGENTEST_CLASS2_H + +/************************************************************ + Class2 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +#include "CppCodegenTest/Class1.h" + +// Include from Include stereotype (header) +#include <iostream> +// End of Include stereotype (header) + +/************************************************************/ +/** + * + */ + +class Class2 { + +public: + + /** + * boolean value with public visibility + */ + bool publicBVal; + + /** + * Default constructor + * + */ + Class2(); + + /** + * Constructor with parameters + * @param newIVal1 @param newIVal2 @param newBVal + */ + Class2(int /*in*/newIVal1, int /*in*/newIVal2, bool /*in*/newBVal); + + /** + * Virtual method + * @param a @param b @param + */ + virtual double virtualOp(double /*in*/a, double /*in*/b); + + /** + * Static method + * + */ + static void staticOp(); + + /** + * Inline method + * @param a @param b @param + */ + inline int inlineOp(int /*in*/a, int /*in*/b); + + /** + * Friend method + * + */ + void friendOp(); + + /** + * Non-static method + * + */ + void nonStaticOp(); + + /** + * Method with in, out, inout, return parameters + * @param in @param out @param inout @param ret + */ + int paramsOp(int /*in*/in, int /*out*/* out, int /*inout*/* inout); + + /** + * Void Method + * @param + */ + void voidOp(); + + /** + * + * @param newIVal1 + */ + void defaultValueOp(int /*in*/newIVal1 = 0); + + /** + * Virtual destructor + * + */ + virtual ~Class2(); + + /** + * + * @param c1 @param + */ + Class1 classesOp(Class1 /*in*/c1); + + /** + * Const method + * + */ + void constOp() const; + +protected: + + /** + * int value with protected visibility + */ + int protectedIVal1; + +private: + + /** + * int value with private visibility + */ + int privateIVal2; + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/** + * int value with package visibility + */ +int packageIVal3; + +/************************************************************/ + +/* Inline functions */ + +/** + * Inline method + * @param a @param b @param + */ +inline int Class2::inlineOp(int /*in*/a, int /*in*/b) { + return a + b; +} + +/************************************************************ + End of Class2 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class3.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class3.cpp new file mode 100644 index 00000000000..730349c9c02 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class3.cpp @@ -0,0 +1,44 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class3_BODY + +/************************************************************ + Class3 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class3.h" + +// Derived includes directives + +// static attributes (if any) + +/** + * Inherited method overriding. + * @param a @param b @param + */ +double Class3::virtualOp(double /*in*/a, double /*in*/b) { + return a + b; +} + +/** + * Inherited virtual destructor + * + */ +Class3::~Class3() { + +} + +/** + * Default constructor + * + */ +Class3::Class3() { + +} + +/************************************************************ + End of Class3 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class3.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class3.h new file mode 100644 index 00000000000..fb742f16899 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class3.h @@ -0,0 +1,57 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS3_H +#define CPPCODEGENTEST_CLASS3_H + +/************************************************************ + Class3 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +#include "CppCodegenTest/Class2.h" + +/************************************************************/ +/** + * + */ + +class Class3: public Class2 { + +public: + + /** + * Inherited method overriding. + * @param a @param b @param + */ + double virtualOp(double /*in*/a, double /*in*/b); + + /** + * Inherited virtual destructor + * + */ + ~Class3(); + + /** + * Default constructor + * + */ + Class3(); + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +/************************************************************ + End of Class3 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class4.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class4.cpp new file mode 100644 index 00000000000..3406d22f055 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class4.cpp @@ -0,0 +1,24 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class4_BODY + +/************************************************************ + Class4 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class4.h" + +// Derived includes directives + +// static attributes (if any) +/** + * + */ +char* Class4::charStringStaticInit = "Hello World"; + +/************************************************************ + End of Class4 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class4.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class4.h new file mode 100644 index 00000000000..c39f38c764d --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class4.h @@ -0,0 +1,193 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS4_H +#define CPPCODEGENTEST_CLASS4_H + +/************************************************************ + Class4 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "CppCodegenTest/Class3.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +/************************************************************/ +/** + * + */ + +class Class4 { +public: + + /** + * + */ + typedef char * pChar; + + Class4() : + arrayDoubleDefault( { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }) { + } + + /** + * + */ + Class3* c3; + + /** + * + */ + char charVar; + + /** + * + */ + double doubleVar; + + /** + * + */ + float floatVar; + + /** + * + */ + int intVar; + + /** + * + */ + void voidVar; + + /** + * + */ + long longVar; + + /** + * + */ + long double longDoubleVar; + + /** + * + */ + short shortVar; + + /** + * + */ + unsigned int unsignedIntVar; + + /** + * + */ + unsigned short unsignedShortVar; + + /** + * + */ + unsigned char unsignedCharVar; + + /** + * + */ + unsigned long unsignedLongVar; + + /** + * + */ + bool boolVar; + + /** + * + */ + int16_t int16_tVar; + + /** + * + */ + uint16_t uint16_tVar; + + /** + * + */ + int32_t int32_tVar; + + /** + * + */ + uint32_t uint32_tVar; + + /** + * + */ + int64_t int64_tVar; + + /** + * + */ + uint64_t uint64_tVar; + + /** + * + */ + wchar_t wchar_tVar; + + /** + * + */ + int8_t int8_tVar; + + /** + * + */ + uint8_t uint8_tVar; + + /** + * + */ + ::CppCodegenTest::Class4::pChar pc; + + /** + * + */ + double arrayDoubleDefault[13]; + + /** + * + */ + char arrayCharInit[11] = { 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', + 'd' }; + + /** + * + */ + char* charString; + + /** + * + */ + char* ptrChar; + + /** + * + */ + static char* charStringStaticInit; + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +/************************************************************ + End of Class4 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class5.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class5.cpp new file mode 100644 index 00000000000..84c89f0d548 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class5.cpp @@ -0,0 +1,20 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class5_BODY + +/************************************************************ + Class5 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class5.h" + +// Derived includes directives + +// static attributes (if any) + +/************************************************************ + End of Class5 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class5.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class5.h new file mode 100644 index 00000000000..cdbc8316b4a --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class5.h @@ -0,0 +1,54 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS5_H +#define CPPCODEGENTEST_CLASS5_H + +/************************************************************ + Class5 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +/************************************************************/ +/** + * C++ Virtual Interface + */ + +class Class5 { + +public: + + /** + * + */ + int externalProp; + + /** + * + * @param iReturn + */ + virtual int pureVirtualOp() = 0; + + /** + * + * @param iReturn + */ + virtual int* pureVirtualConstOp() = 0; + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +/************************************************************ + End of Class5 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class6.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class6.cpp new file mode 100644 index 00000000000..e25e51cf38f --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class6.cpp @@ -0,0 +1,20 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class6_BODY + +/************************************************************ + Class6 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class6.h" + +// Derived includes directives + +// static attributes (if any) + +/************************************************************ + End of Class6 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class6.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class6.h new file mode 100644 index 00000000000..a7bb70004da --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class6.h @@ -0,0 +1,44 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS6_H +#define CPPCODEGENTEST_CLASS6_H + +/************************************************************ + Class6 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "CppCodegenTest/Class3.h" + +#include "CppCodegenTest/Class5.h" + +/************************************************************/ +/** + * Virtual class inheritance and class instantiation + */ + +class Class6: public Class5 { + +public: + + /** + * + */ + Class3 class3; + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +/************************************************************ + End of Class6 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class7.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class7.cpp new file mode 100644 index 00000000000..19d9e613ad2 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class7.cpp @@ -0,0 +1,24 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Class7_BODY + +/************************************************************ + Class7 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Class7.h" + +// Derived includes directives + +// static attributes (if any) +/** + * + */ +int Class7::staticProp; + +/************************************************************ + End of Class7 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class7.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class7.h new file mode 100644 index 00000000000..ba39ae90524 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Class7.h @@ -0,0 +1,59 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_CLASS7_H +#define CPPCODEGENTEST_CLASS7_H + +/************************************************************ + Class7 class header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +// Include from Include stereotype (header) +#define helloworld 3 +// End of Include stereotype (header) + +/************************************************************/ +/** + * + */ + +class Class7 { + +public: + Class7() : + defaultProp(43) { + } + + /** + * + */ + static int staticProp; + + /** + * + */ + int defaultProp; + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/** + * + */ +int externProp; + +/************************************************************/ + +/* Inline functions */ + +/************************************************************ + End of Class7 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class8.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class8.cpp new file mode 100644 index 00000000000..c0c966cbd99 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class8.cpp @@ -0,0 +1,41 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Package1_Class8_BODY + +/************************************************************ + Class8 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Package1/Class8.h" + +// Derived includes directives + +namespace Package1 { + +// static attributes (if any) + +/** + * + * @param iVal1 @param iVal2 @param cVal1 @param cVal2 @param this + */ +int Class8::operation1(int /*in*/iVal1, int /*in*/iVal2, char /*in*/cVal1, + char /*in*/cVal2) { + +} + +/** + * + * @param iVal1 + */ +void Class8::operation1(int /*in*/iVal1) { + +} + +} // of namespace Package1 + +/************************************************************ + End of Class8 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class8.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class8.h new file mode 100644 index 00000000000..194ce808122 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class8.h @@ -0,0 +1,62 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_PACKAGE1_CLASS8_H +#define CPPCODEGENTEST_PACKAGE1_CLASS8_H + +/************************************************************ + Class8 class header + ************************************************************/ + +#include "CppCodegenTest/Package1/Pkg_Package1.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +namespace Package1 { + +/************************************************************/ +/** + * + */ + +class Class8 { + +public: + Class8() : + defaultIValue(12) { + } + + /** + * + */ + int defaultIValue; + + /** + * + * @param iVal1 @param iVal2 @param cVal1 @param cVal2 @param this + */ + int operation1(int /*in*/iVal1, int /*in*/iVal2 = 2, char /*in*/cVal1, + char /*in*/cVal2); + + /** + * + * @param iVal1 + */ + void operation1(int /*in*/iVal1); + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/************************************************************/ + +/* Inline functions */ + +} // of namespace Package1 + +/************************************************************ + End of Class8 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class9.cpp b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class9.cpp new file mode 100644 index 00000000000..26d3b037db4 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class9.cpp @@ -0,0 +1,48 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#define CppCodegenTest_Package1_Class9_BODY + +/************************************************************ + Class9 class body + ************************************************************/ + +// include associated header file +#include "CppCodegenTest/Package1/Class9.h" + +// Derived includes directives + +namespace Package1 { + +// static attributes (if any) + +/** + * + * @param + */ +int Class9::volatileIntOperation() { + +} + +/** + * Should not generate the 'register' keyword as it cannot be used in method signatures. + * @param + */ +int Class9::registerOperation() { + +} + +/** + * + * @param + */ +int Class9::externOperation() { + +} + +} // of namespace Package1 + +/************************************************************ + End of Class9 class body + ************************************************************/
\ No newline at end of file diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class9.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class9.h new file mode 100644 index 00000000000..03603e898f5 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Class9.h @@ -0,0 +1,77 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef CPPCODEGENTEST_PACKAGE1_CLASS9_H +#define CPPCODEGENTEST_PACKAGE1_CLASS9_H + +/************************************************************ + Class9 class header + ************************************************************/ + +#include "CppCodegenTest/Package1/Pkg_Package1.h" + +#include "AnsiCLibrary/Pkg_AnsiCLibrary.h" + +namespace Package1 { + +/************************************************************/ +/** + * + */ + +class Class9 { + +public: + Class9() : + externAttribute(3) { + } + + /** + * + */ + int volatileAttribute; + + /** + * Should not generate 'register' keyword as 'register' only applies to properties declared within the scope of an operation. + */ + int registerAttribute; + + /** + * + * @param + */ + int volatileIntOperation(); + + /** + * Should not generate the 'register' keyword as it cannot be used in method signatures. + * @param + */ + int registerOperation(); + +}; +/************************************************************/ +/* External declarations (package visibility) */ + +/** + * + */ +int externAttribute; + +/** + * + * @param + */ +int externOperation(); + +/************************************************************/ + +/* Inline functions */ + +} // of namespace Package1 + +/************************************************************ + End of Class9 class header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Pkg_Package1.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Pkg_Package1.h new file mode 100644 index 00000000000..6fee268eb47 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Package1/Pkg_Package1.h @@ -0,0 +1,36 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef PKG_CPPCODEGENTEST_PACKAGE1 +#define PKG_CPPCODEGENTEST_PACKAGE1 + +/************************************************************ + Pkg_Package1 package header + ************************************************************/ + +#include "CppCodegenTest/Pkg_CppCodegenTest.h" + +#ifndef _IN_ +#define _IN_ +#endif +#ifndef _OUT_ +#define _OUT_ +#endif +#ifndef _INOUT_ +#define _INOUT_ +#endif + +/* Package dependency header include */ + +namespace Package1 { + +// Types defined within the package + +}// of namespace Package1 + +/************************************************************ + End of Pkg_Package1 package header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Pkg_CppCodegenTest.h b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Pkg_CppCodegenTest.h new file mode 100644 index 00000000000..62e2045f7ef --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/ExpectedModel/Pkg_CppCodegenTest.h @@ -0,0 +1,34 @@ +// -------------------------------------------------------- +// Code generated by Papyrus C++ +// -------------------------------------------------------- + +#ifndef PKG_CPPCODEGENTEST +#define PKG_CPPCODEGENTEST + +/************************************************************ + Pkg_CppCodegenTest package header + ************************************************************/ + +#ifndef _IN_ +#define _IN_ +#endif +#ifndef _OUT_ +#define _OUT_ +#endif +#ifndef _INOUT_ +#define _INOUT_ +#endif + +/* Package dependency header include */ + +namespace CppCodegenTest { + +// Types defined within the package + +}// of namespace CppCodegenTest + +/************************************************************ + End of Pkg_CppCodegenTest package header + ************************************************************/ + +#endif diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/META-INF/MANIFEST.MF b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..03921172170 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/META-INF/MANIFEST.MF @@ -0,0 +1,26 @@ +Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Papyrus CPP Codegen Tests
+Bundle-SymbolicName: org.eclipse.papyrus.cpp.codegen.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.junit,
+ org.eclipse.papyrus.cpp.codegen,
+ org.eclipse.papyrus.cpp.codegen.ui,
+ org.eclipse.papyrus.uml.tools,
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.ui.ide,
+ org.eclipse.emf.common.ui,
+ org.eclipse.papyrus.editor,
+ org.eclipse.emf.edit,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.infra.services.openelement,
+ org.eclipse.cdt.core,
+ org.eclipse.papyrus.acceleo,
+ org.eclipse.papyrus.infra.emf
+Bundle-Activator: org.eclipse.papyrus.cpp.codegen.tests.TestPlugin
+Bundle-ActivationPolicy: lazy
+Eclipse-BundleShape: dir
+Export-Package: org.eclipse.papyrus.cpp.codegen.tests
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/build.properties b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/build.properties new file mode 100644 index 00000000000..18fbe051c0f --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/build.properties @@ -0,0 +1,16 @@ +source.. = src/
+output.. = bin/
+bin.includes = .,\
+ resources/,\
+ bin/,\
+ META-INF/,\
+ ExpectedModel/,\
+ GenModelTest.launch,\
+ build.properties
+src.includes = src/,\
+ resources/,\
+ bin/,\
+ META-INF/,\
+ ExpectedModel/,\
+ GenModelTest.launch,\
+ build.properties
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.di b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.di new file mode 100644 index 00000000000..bf9abab340f --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.notation b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.notation new file mode 100644 index 00000000000..2c1793d1cf5 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.notation @@ -0,0 +1,256 @@ +<?xml version="1.0" encoding="UTF-8"?> +<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_t4itkMyYEeOZRP5VM5W4JQ" type="PapyrusUMLClassDiagram" name="NewDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_iERxIMyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_iERxIsyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_iERxI8yfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_iERxJMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_iERxJcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iERxJsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iERxJ8yfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_iERxKMyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_iERxKcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_iERxKsyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iERxK8yfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iERxLMyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_iESYMMyfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_iESYMcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_iESYMsyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iESYM8yfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iESYNMyfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_x6ArECrKEeOncLSXAkfRBA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iERxIcyfEeOcyP6DQZu_Og" x="20" y="21"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_kg9O8MyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_kg92AMyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_kg92AcyfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_kg92AsyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_kg92A8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_kg92BMyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kg92BcyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_kg92BsyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_kg92B8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_kg92CMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_kg92CcyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kg92CsyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_kg92C8yfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_kg92DMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_kg92DcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_kg92DsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kg92D8yfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_0E-t0CrKEeOncLSXAkfRBA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kg9O8cyfEeOcyP6DQZu_Og" x="165" y="22"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_nJzggMyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_nJ0uoMyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_nJ0uocyfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_nJ0uosyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_nJ0uo8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_nJ0upMyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nJ0upcyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_nJ0upsyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_nJ0up8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_nJ0uqMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_nJ0uqcyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nJ1VsMyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_nJ1VscyfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_nJ1VssyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_nJ1Vs8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_nJ1VtMyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nJ1VtcyfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_29UM4CrKEeOncLSXAkfRBA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nJzggcyfEeOcyP6DQZu_Og" x="305" y="24"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_oC650MyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_oC8H8MyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_oC8H8cyfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_oC8H8syfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_oC8H88yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_oC8H9MyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oC8H9cyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_oC8H9syfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_oC8H98yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_oC8H-MyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_oC8H-cyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oC8H-syfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_oC8H-8yfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_oC8H_MyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_oC8H_cyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_oC8H_syfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oC8H_8yfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_-j3HgCrKEeOncLSXAkfRBA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oC7g4MyfEeOcyP6DQZu_Og" x="445" y="24"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_o8Ad8MyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_o8BFAMyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_o8BFAcyfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_o8BFAsyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_o8BFA8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_o8BFBMyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o8BFBcyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_o8BFBsyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_o8BFB8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_o8BFCMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_o8BFCcyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o8BFCsyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_o8BFC8yfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_o8BFDMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_o8BFDcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_o8BFDsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o8BFD8yfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_hTMV0CumEeOcwILjsIdkdw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o8Ad8cyfEeOcyP6DQZu_Og" x="590" y="23"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_qNfT8MyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_qNf7AMyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_qNf7AcyfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_qNf7AsyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_qNf7A8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_qNf7BMyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qNf7BcyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_qNf7BsyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_qNf7B8yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_qNf7CMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_qNf7CcyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qNf7CsyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_qNf7C8yfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_qNf7DMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_qNf7DcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_qNf7DsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qNf7D8yfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_OJ7A0CxUEeOcwILjsIdkdw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qNfT8cyfEeOcyP6DQZu_Og" x="21" y="139"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_sl4usMyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_sl4ussyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_sl4us8yfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_sl4utMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_sl4utcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_sl4utsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sl4ut8yfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_sl4uuMyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_sl4uucyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_sl4uusyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_sl4uu8yfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sl4uvMyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_sl5VwMyfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_sl5VwcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_sl5VwsyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_sl5Vw8yfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sl5VxMyfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_ZqD3YCz9EeOcwILjsIdkdw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sl4uscyfEeOcyP6DQZu_Og" x="305" y="143"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_txmT4MyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_txm68MyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_txm68cyfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_txm68syfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_txm688yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_txm69MyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_txm69cyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_txm69syfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_txm698yfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_txm6-MyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_txm6-cyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_txm6-syfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_txm6-8yfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_txm6_MyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_txm6_cyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_txm6_syfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_txm6_8yfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_qS9iYDEmEeOSfbt-FmCdoQ"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_txmT4cyfEeOcyP6DQZu_Og" x="449" y="145"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_uTijUMyfEeOcyP6DQZu_Og" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_uTijUsyfEeOcyP6DQZu_Og" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_uTijU8yfEeOcyP6DQZu_Og" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_uTijVMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_uTijVcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_uTijVsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uTijV8yfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_uTijWMyfEeOcyP6DQZu_Og" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_uTijWcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_uTjKYMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_uTjKYcyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uTjKYsyfEeOcyP6DQZu_Og"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_uTjKY8yfEeOcyP6DQZu_Og" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_uTjKZMyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_uTjKZcyfEeOcyP6DQZu_Og"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_uTjKZsyfEeOcyP6DQZu_Og"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uTjKZ8yfEeOcyP6DQZu_Og"/> + </children> + <element xmi:type="uml:Class" href="CppCodegenTest.uml#_jcK5MDG0EeOOEc5pE2t6oQ"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uTijUcyfEeOcyP6DQZu_Og" x="597" y="148"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_t5cpgMy5EeOtSda2xb0Kjw" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_t5xZoMy5EeOtSda2xb0Kjw" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_t5yAsMy5EeOtSda2xb0Kjw" type="7016"> + <styles xmi:type="notation:TitleStyle" xmi:id="_t5yAscy5EeOtSda2xb0Kjw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t5yAssy5EeOtSda2xb0Kjw"/> + </children> + <element xmi:type="uml:Package" href="CppCodegenTest.uml#_nZ5DgDEmEeOSfbt-FmCdoQ"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t5cpgcy5EeOtSda2xb0Kjw" x="22" y="253"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_Wu-RgMy6EeOtSda2xb0Kjw" type="2005"> + <children xmi:type="notation:DecorationNode" xmi:id="_WvAtwMy6EeOtSda2xb0Kjw" type="5020"/> + <children xmi:type="notation:DecorationNode" xmi:id="_WvCi8My6EeOtSda2xb0Kjw" type="7009"> + <styles xmi:type="notation:TitleStyle" xmi:id="_WvCi8cy6EeOtSda2xb0Kjw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WvCi8sy6EeOtSda2xb0Kjw"/> + </children> + <element xmi:type="uml:Model" href="CppCodegenTest.uml#_1_ToYCoNEeOncLSXAkfRBA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wu-Rgcy6EeOtSda2xb0Kjw" x="253" y="255"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_t4itkcyYEeOZRP5VM5W4JQ"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_t4itksyYEeOZRP5VM5W4JQ"> + <owner xmi:type="uml:Model" href="CppCodegenTest.uml#_t4hfcMyYEeOZRP5VM5W4JQ"/> + </styles> + <element xmi:type="uml:Model" href="CppCodegenTest.uml#_t4hfcMyYEeOZRP5VM5W4JQ"/> + <edges xmi:type="notation:Connector" xmi:id="_rssc4MyfEeOcyP6DQZu_Og" type="4001" source="_qNfT8MyfEeOcyP6DQZu_Og" target="_nJzggMyfEeOcyP6DQZu_Og"> + <children xmi:type="notation:DecorationNode" xmi:id="_rstD8MyfEeOcyP6DQZu_Og" type="6001"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rstD8cyfEeOcyP6DQZu_Og" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_rstrAMyfEeOcyP6DQZu_Og" type="6002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rstrAcyfEeOcyP6DQZu_Og" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_rstrAsyfEeOcyP6DQZu_Og" type="6003"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rstrA8yfEeOcyP6DQZu_Og" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_rsuSEMyfEeOcyP6DQZu_Og" type="6005"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rsuSEcyfEeOcyP6DQZu_Og" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_rsuSEsyfEeOcyP6DQZu_Og" type="6033"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rsuSE8yfEeOcyP6DQZu_Og" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_rsuSFMyfEeOcyP6DQZu_Og" type="6034"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rsuSFcyfEeOcyP6DQZu_Og" y="-20"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_rssc4cyfEeOcyP6DQZu_Og"/> + <element xmi:type="uml:Association" href="CppCodegenTest.uml#_YZOWUCxoEeOcwILjsIdkdw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rssc4syfEeOcyP6DQZu_Og" points="[50, -21, -234, 94]$[234, -95, -50, 20]"/> + </edges> +</notation:Diagram> diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.uml b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.uml new file mode 100644 index 00000000000..49628739a0c --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/resources/CppCodegenTest.uml @@ -0,0 +1,745 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <uml:Model xmi:id="_1_ToYCoNEeOncLSXAkfRBA" name="CppCodegenTest"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_1_ToYSoNEeOncLSXAkfRBA"> + <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/> + </packageImport> + <packageImport xmi:type="uml:PackageImport" xmi:id="_TaxOkCoTEeOncLSXAkfRBA"> + <importedPackage xmi:type="uml:Model" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_DV8nkBv8EduZN5aJJITI5w"/> + </packageImport> + <packagedElement xmi:type="uml:Class" xmi:id="_x6ArECrKEeOncLSXAkfRBA" name="Class1"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_U4LD0CrbEeOncLSXAkfRBA" name="iVal" visibility="private"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9--NUCtwEeOcwILjsIdkdw" name="Class1" specification="_fvQ-oCraEeOncLSXAkfRBA"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_XmDKUWdrEeOvh505Y4rydA" name="cSource" type="_x6ArECrKEeOncLSXAkfRBA"/> + <language>C/C++</language> + <body> +iVal = cSource.iVal;
</body> + </ownedBehavior> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KtFesCtxEeOcwILjsIdkdw" name="~Class1" specification="_b2v08CraEeOncLSXAkfRBA"> + <language>C/C++</language> + <body> +
</body> + </ownedBehavior> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Q2IjdDG6EeOOEc5pE2t6oQ" name="operator =" specification="_VvvacCraEeOncLSXAkfRBA" isReentrant="false"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_Xl71kGdrEeOvh505Y4rydA" name="cSource" type="_x6ArECrKEeOncLSXAkfRBA"/> + <language>C/C++</language> + <body> +if (this == &cSource)
 + return *this;
 +
 +iVal = cSource.iVal;
 +
 +return *this;
</body> + </ownedBehavior> + <ownedOperation xmi:type="uml:Operation" xmi:id="_VvvacCraEeOncLSXAkfRBA" name="operator =" method="_Q2IjdDG6EeOOEc5pE2t6oQ"> + <ownedComment xmi:type="uml:Comment" xmi:id="_NDtNQCtwEeOcwILjsIdkdw" annotatedElement="_VvvacCraEeOncLSXAkfRBA"> + <body>Assignment operator</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_Xl6ncGdrEeOvh505Y4rydA" name="cSource" type="_x6ArECrKEeOncLSXAkfRBA"/> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_6tK4IGmnEeObBONB4_KErg" name="this" type="_x6ArECrKEeOncLSXAkfRBA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_b2v08CraEeOncLSXAkfRBA" name="~Class1" method="_KtFesCtxEeOcwILjsIdkdw"> + <ownedComment xmi:type="uml:Comment" xmi:id="_LY0YwCtwEeOcwILjsIdkdw" annotatedElement="_b2v08CraEeOncLSXAkfRBA"> + <body>Destructor</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_fvQ-oCraEeOncLSXAkfRBA" name="Class1" method="_9--NUCtwEeOcwILjsIdkdw" isQuery="true"> + <ownedComment xmi:type="uml:Comment" xmi:id="_PvFOYCtwEeOcwILjsIdkdw" annotatedElement="_fvQ-oCraEeOncLSXAkfRBA"> + <body>Copy constructor</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_XmDKUGdrEeOvh505Y4rydA" name="cSource" type="_x6ArECrKEeOncLSXAkfRBA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_0E-t0CrKEeOncLSXAkfRBA" name="Class2"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_8hdewCt2EeOcwILjsIdkdw" name="publicBVal"> + <ownedComment xmi:type="uml:Comment" xmi:id="_0sh-ADHFEeOOEc5pE2t6oQ" annotatedElement="_8hdewCt2EeOcwILjsIdkdw"> + <body>boolean value with public visibility</body> + </ownedComment> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_NkSbsCt5EeOcwILjsIdkdw" name="protectedIVal1" visibility="protected"> + <ownedComment xmi:type="uml:Comment" xmi:id="_uOkcEDHFEeOOEc5pE2t6oQ" annotatedElement="_NkSbsCt5EeOcwILjsIdkdw"> + <body>int value with protected visibility</body> + </ownedComment> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6uDGwCt-EeOcwILjsIdkdw" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6uDt0Ct-EeOcwILjsIdkdw" value="1"/> + <defaultValue xmi:type="uml:LiteralString" xmi:id="_6uEU4Ct-EeOcwILjsIdkdw"> + <value xsi:nil="true"/> + </defaultValue> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_OalxkCt5EeOcwILjsIdkdw" name="privateIVal2" visibility="private"> + <ownedComment xmi:type="uml:Comment" xmi:id="_tJ-ykDHFEeOOEc5pE2t6oQ" annotatedElement="_OalxkCt5EeOcwILjsIdkdw"> + <body>int value with private visibility</body> + </ownedComment> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_b-QGYDHFEeOOEc5pE2t6oQ" name="packageIVal3" visibility="package"> + <ownedComment xmi:type="uml:Comment" xmi:id="_r7uPsDHFEeOOEc5pE2t6oQ" annotatedElement="_b-QGYDHFEeOOEc5pE2t6oQ"> + <body>int value with package visibility</body> + </ownedComment> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RB9HUCt3EeOcwILjsIdkdw" name="Class2" specification="_HV3R8Ct2EeOcwILjsIdkdw"> + <language>C/C++</language> + <body>iVal1 = newIVal1;
 +iVal2 = newIVal2;
 +bVal = newBVal;</body> + </ownedBehavior> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wrOJMCt5EeOcwILjsIdkdw" name="virtualOp" specification="_6QndgCt2EeOcwILjsIdkdw"> + <language>C/C++</language> + <body>return;</body> + </ownedBehavior> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_X_ZAQCuHEeOcwILjsIdkdw" name="Class2" specification="_8h2VwCt1EeOcwILjsIdkdw"> + <language>C/C++</language> + <body>iVal1 = 0;
 +iVal2 = 0;
 +bVal = false;</body> + </ownedBehavior> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q-ZzYC0FEeOcwILjsIdkdw" name="inlineOp" specification="_HtC9sCuIEeOcwILjsIdkdw"> + <language>C/C++</language> + <body>return a+b;</body> + </ownedBehavior> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rqzpYDHGEeOOEc5pE2t6oQ" name="constOps" specification="_fGJ2ADHGEeOOEc5pE2t6oQ"> + <language>C/C++</language> + <body>std::cout<<"I am a const method"<<std::endl;</body> + </ownedBehavior> + <ownedOperation xmi:type="uml:Operation" xmi:id="_8h2VwCt1EeOcwILjsIdkdw" name="Class2" method="_X_ZAQCuHEeOcwILjsIdkdw"> + <ownedComment xmi:type="uml:Comment" xmi:id="_Cubz0Ct2EeOcwILjsIdkdw" annotatedElement="_8h2VwCt1EeOcwILjsIdkdw"> + <body>Default constructor</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_HV3R8Ct2EeOcwILjsIdkdw" name="Class2" method="_RB9HUCt3EeOcwILjsIdkdw"> + <ownedComment xmi:type="uml:Comment" xmi:id="_327CQCt2EeOcwILjsIdkdw" annotatedElement="_HV3R8Ct2EeOcwILjsIdkdw"> + <body>Constructor with parameters</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_1ZSiMCt2EeOcwILjsIdkdw" name="newIVal1"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_f5oS8CuHEeOcwILjsIdkdw" name="newIVal2"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_mBfpECuHEeOcwILjsIdkdw" name="newBVal"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_6QndgCt2EeOcwILjsIdkdw" name="virtualOp" method="_wrOJMCt5EeOcwILjsIdkdw"> + <ownedComment xmi:type="uml:Comment" xmi:id="_6F9lUCt5EeOcwILjsIdkdw" annotatedElement="_6QndgCt2EeOcwILjsIdkdw"> + <body>Virtual method</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_LmW-oGwgEeOUiKqqNL5BkQ" name="a"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_NOv4wGwgEeOUiKqqNL5BkQ" name="b"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_O0AmYGwgEeOUiKqqNL5BkQ" name="" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_EOE8cCuIEeOcwILjsIdkdw" name="staticOp" isStatic="true"> + <ownedComment xmi:type="uml:Comment" xmi:id="_dGa0YCubEeOcwILjsIdkdw" annotatedElement="_EOE8cCuIEeOcwILjsIdkdw"> + <body>Static method</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_HtC9sCuIEeOcwILjsIdkdw" name="inlineOp" method="_q-ZzYC0FEeOcwILjsIdkdw"> + <ownedComment xmi:type="uml:Comment" xmi:id="_edOPQCubEeOcwILjsIdkdw" annotatedElement="_HtC9sCuIEeOcwILjsIdkdw"> + <body>Inline method</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_GXNQADHGEeOOEc5pE2t6oQ" name="a"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_IBIbMDHGEeOOEc5pE2t6oQ" name="b"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_X2lQ8DHGEeOOEc5pE2t6oQ" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_MZs6ECuIEeOcwILjsIdkdw" name="friendOp"> + <ownedComment xmi:type="uml:Comment" xmi:id="_gnRsACubEeOcwILjsIdkdw" annotatedElement="_MZs6ECuIEeOcwILjsIdkdw"> + <body>Friend method</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_PbnYoCuYEeOcwILjsIdkdw" name="nonStaticOp"> + <ownedComment xmi:type="uml:Comment" xmi:id="_jPwxMCubEeOcwILjsIdkdw" annotatedElement="_PbnYoCuYEeOcwILjsIdkdw"> + <body>Non-static method</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_WoYhUCuYEeOcwILjsIdkdw" name="paramsOp"> + <ownedComment xmi:type="uml:Comment" xmi:id="_nGVaICubEeOcwILjsIdkdw" annotatedElement="_WoYhUCuYEeOcwILjsIdkdw"> + <body>Method with in, out, inout, return parameters</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_e2H-0CuYEeOcwILjsIdkdw" name="in"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_ghAzUCuYEeOcwILjsIdkdw" name="out" direction="out"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_iKAKYCuYEeOcwILjsIdkdw" name="inout" direction="inout"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_lPf7sCuYEeOcwILjsIdkdw" name="ret" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_C4qY8CuZEeOcwILjsIdkdw" name="voidOp"> + <ownedComment xmi:type="uml:Comment" xmi:id="_M-gwoDHFEeOOEc5pE2t6oQ" annotatedElement="_C4qY8CuZEeOcwILjsIdkdw"> + <body>Void Method</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_DHEZoCufEeOcwILjsIdkdw" name="" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_Rmpa4CuaEeOcwILjsIdkdw" name="defaultValueOp"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_ovlsYCuaEeOcwILjsIdkdw" name="newIVal1"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_ovlsYSuaEeOcwILjsIdkdw" name="DEFAULT_INT"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_Ub5CUCudEeOcwILjsIdkdw" name="~Class2"> + <ownedComment xmi:type="uml:Comment" xmi:id="_9HrlYDHFEeOOEc5pE2t6oQ" annotatedElement="_Ub5CUCudEeOcwILjsIdkdw"> + <body>Virtual destructor</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_MRiIoCugEeOcwILjsIdkdw" name="classesOp"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_Xd-L4CugEeOcwILjsIdkdw" name="c1" type="_x6ArECrKEeOncLSXAkfRBA"/> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_aK_y0CugEeOcwILjsIdkdw" name="" type="_x6ArECrKEeOncLSXAkfRBA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_fGJ2ADHGEeOOEc5pE2t6oQ" name="constOp" method="_rqzpYDHGEeOOEc5pE2t6oQ"> + <ownedComment xmi:type="uml:Comment" xmi:id="_sz0qcDHHEeOOEc5pE2t6oQ" annotatedElement="_fGJ2ADHGEeOOEc5pE2t6oQ"> + <body>Const method</body> + </ownedComment> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_29UM4CrKEeOncLSXAkfRBA" name="Class3"> + <generalization xmi:type="uml:Generalization" xmi:id="_EN-zoCt5EeOcwILjsIdkdw" general="_0E-t0CrKEeOncLSXAkfRBA"/> + <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0ekfACt5EeOcwILjsIdkdw" name="virtualOp" specification="_IoFAYCt5EeOcwILjsIdkdw"> + <language>C/C++</language> + <body>return a+b;</body> + </ownedBehavior> + <ownedOperation xmi:type="uml:Operation" xmi:id="_IoFAYCt5EeOcwILjsIdkdw" name="virtualOp" method="_0ekfACt5EeOcwILjsIdkdw"> + <ownedComment xmi:type="uml:Comment" xmi:id="_4qnosCt5EeOcwILjsIdkdw" annotatedElement="_IoFAYCt5EeOcwILjsIdkdw"> + <body>Inherited method overriding.</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_7owzgDHJEeOOEc5pE2t6oQ" name="a"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_991NcDHJEeOOEc5pE2t6oQ" name="b"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_HsJs4DHKEeOOEc5pE2t6oQ" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_du7T8CudEeOcwILjsIdkdw" name="~Class3"> + <ownedComment xmi:type="uml:Comment" xmi:id="_Fr_C4CueEeOcwILjsIdkdw" annotatedElement="_du7T8CudEeOcwILjsIdkdw"> + <body>Inherited virtual destructor</body> + </ownedComment> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_1ISAACudEeOcwILjsIdkdw" name="Class3"> + <ownedComment xmi:type="uml:Comment" xmi:id="_JBPugCueEeOcwILjsIdkdw" annotatedElement="_1ISAACudEeOcwILjsIdkdw"> + <body>Default constructor</body> + </ownedComment> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_-j3HgCrKEeOncLSXAkfRBA" name="Class4"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_OIbRcCujEeOcwILjsIdkdw" name="c3" type="_29UM4CrKEeOncLSXAkfRBA"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_k18HwCw-EeOcwILjsIdkdw" name="charVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_qj4iACw-EeOcwILjsIdkdw" name="doubleVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_snupECw-EeOcwILjsIdkdw" name="floatVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_u2rM4Cw-EeOcwILjsIdkdw" name="intVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_w4HgMCw-EeOcwILjsIdkdw" name="voidVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_ystDQCw-EeOcwILjsIdkdw" name="longVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_1Yde4Cw-EeOcwILjsIdkdw" name="longDoubleVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_DLNPkByeEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_-XZv0Cw-EeOcwILjsIdkdw" name="shortVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_K-lFQByeEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_Aj1LICw_EeOcwILjsIdkdw" name="unsignedIntVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_UexPkCw_EeOcwILjsIdkdw" name="unsignedShortVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_V5vyUByeEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_bIofgCw_EeOcwILjsIdkdw" name="unsignedCharVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_ddUe8Cw_EeOcwILjsIdkdw" name="unsignedLongVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_f2ShcCw_EeOcwILjsIdkdw" name="boolVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_iRjC8Cw_EeOcwILjsIdkdw" name="int16_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_V3dAkOmJEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_k0m1kCw_EeOcwILjsIdkdw" name="uint16_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_Y3550OmJEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_n_zmQCw_EeOcwILjsIdkdw" name="int32_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_yJpD0OmJEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_vAhP8Cw_EeOcwILjsIdkdw" name="uint32_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_1q1SoOmJEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_x4xPcCw_EeOcwILjsIdkdw" name="int64_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6hHFEOmJEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_0eYm0Cw_EeOcwILjsIdkdw" name="uint64_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8kiVYOmJEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_3ZiJUCw_EeOcwILjsIdkdw" name="wchar_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_b1zY4OmKEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_5noYkCw_EeOcwILjsIdkdw" name="int8_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_zL7x0OmKEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_8NxUYCw_EeOcwILjsIdkdw" name="uint8_tVar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_0-8nkOmKEeG_gcDHG3asaQ"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_1oosECxCEeOcwILjsIdkdw" name="pc" type="_lIB18CxBEeOcwILjsIdkdw"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_tJYOgCxHEeOcwILjsIdkdw" name="arrayDoubleDefault"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralString" xmi:id="_AMr1MDHLEeOOEc5pE2t6oQ" value="{0,1,2,3,4,5,6,7,8,9,10,11,12}"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_CWUEUCxeEeOcwILjsIdkdw" name="arrayCharInit"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_f7m3YDECEeOSfbt-FmCdoQ" name="charString"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_NBtLYDHBEeOOEc5pE2t6oQ" name="ptrChar"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_u7S7ADHMEeOOEc5pE2t6oQ" name="charStringStaticInit" isStatic="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralString" xmi:id="_FT8swGwdEeOUiKqqNL5BkQ" value=""Hello World""/> + </ownedAttribute> + <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_lIB18CxBEeOcwILjsIdkdw" name="pChar"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_hTMV0CumEeOcwILjsIdkdw" name="Class5" isAbstract="true"> + <ownedComment xmi:type="uml:Comment" xmi:id="_kJlUICumEeOcwILjsIdkdw" annotatedElement="_hTMV0CumEeOcwILjsIdkdw"> + <body>C++ Virtual Interface</body> + </ownedComment> + <ownedAttribute xmi:type="uml:Property" xmi:id="_u_QOYCxwEeOcwILjsIdkdw" name="externalProp"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedOperation xmi:type="uml:Operation" xmi:id="_mBTqwCumEeOcwILjsIdkdw" name="pureVirtualOp" isAbstract="true"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_OCGvICw0EeOcwILjsIdkdw" name="iReturn" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_UZnq0Cw0EeOcwILjsIdkdw" name="pureVirtualConstOp" isAbstract="true"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_jlwd0Cw0EeOcwILjsIdkdw" name="iReturn" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_OJ7A0CxUEeOcwILjsIdkdw" name="Class6"> + <ownedComment xmi:type="uml:Comment" xmi:id="_XOFuMGwJEeOUiKqqNL5BkQ" annotatedElement="_OJ7A0CxUEeOcwILjsIdkdw"> + <body>Virtual class inheritance and class instantiation</body> + </ownedComment> + <generalization xmi:type="uml:Generalization" xmi:id="_ruktUCxbEeOcwILjsIdkdw" general="_hTMV0CumEeOcwILjsIdkdw"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_YZNvQCxoEeOcwILjsIdkdw" name="class3" type="_29UM4CrKEeOncLSXAkfRBA" association="_YZOWUCxoEeOcwILjsIdkdw"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YZNvQSxoEeOcwILjsIdkdw" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YZNvQixoEeOcwILjsIdkdw" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_YZOWUCxoEeOcwILjsIdkdw" name="class6_class3_1" memberEnd="_YZOWUSxoEeOcwILjsIdkdw _YZNvQCxoEeOcwILjsIdkdw"> + <ownedEnd xmi:type="uml:Property" xmi:id="_YZOWUSxoEeOcwILjsIdkdw" name="class6" type="_OJ7A0CxUEeOcwILjsIdkdw" association="_YZOWUCxoEeOcwILjsIdkdw"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YZOWUixoEeOcwILjsIdkdw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YZOWUyxoEeOcwILjsIdkdw" value="*"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_ZqD3YCz9EeOcwILjsIdkdw" name="Class7"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_oxYb0Cz9EeOcwILjsIdkdw" name="externProp" visibility="package"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_1oxvkCz-EeOcwILjsIdkdw" name="staticProp" isStatic="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_RHyasC0FEeOcwILjsIdkdw" name="defaultProp"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_m7wOYDHIEeOOEc5pE2t6oQ" name="" value="43"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_nZ5DgDEmEeOSfbt-FmCdoQ" name="Package1"> + <packagedElement xmi:type="uml:Class" xmi:id="_qS9iYDEmEeOSfbt-FmCdoQ" name="Class8"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_ncw74DEnEeOSfbt-FmCdoQ" name="defaultIValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_oxQ9wDE0EeOSfbt-FmCdoQ" name="INT_WORLD" value="12"/> + </ownedAttribute> + <ownedOperation xmi:type="uml:Operation" xmi:id="_03LAoDEpEeOSfbt-FmCdoQ" name="operation1"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_LfwXEDEqEeOSfbt-FmCdoQ" name="iVal1"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_e8_WYDErEeOSfbt-FmCdoQ" name="iVal2" effect="read"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_8dO2QDEtEeOSfbt-FmCdoQ" name="LOL" value="2"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_g_QwIDErEeOSfbt-FmCdoQ" name="cVal1" effect="update"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_mGIjUDErEeOSfbt-FmCdoQ" name="cVal2" effect="delete"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/> + </ownedParameter> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_LjgjwDEsEeOSfbt-FmCdoQ" name="this" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ukQ7UDEtEeOSfbt-FmCdoQ" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ukT-oDEtEeOSfbt-FmCdoQ" value="1"/> + <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_LjgjwTEsEeOSfbt-FmCdoQ" name="INT_DEFAULT" value="42"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_18bYgDEpEeOSfbt-FmCdoQ" name="operation1"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_oEtfUGwEEeOUiKqqNL5BkQ" name="iVal1"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_jcK5MDG0EeOOEc5pE2t6oQ" name="Class9"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_mcsD4DG0EeOOEc5pE2t6oQ" name="volatileAttribute"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_nXAXEDG0EeOOEc5pE2t6oQ" name="registerAttribute"> + <ownedComment xmi:type="uml:Comment" xmi:id="_1om3gHx-EeOJEKG9thf66A" annotatedElement="_nXAXEDG0EeOOEc5pE2t6oQ"> + <body>Should not generate 'register' keyword as 'register' only applies to properties declared within the scope of an operation.</body> + </ownedComment> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_ogWkwDG0EeOOEc5pE2t6oQ" name="externAttribute" visibility="package"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_kT4K4Hx_EeOJEKG9thf66A" name="" value="3"/> + </ownedAttribute> + <ownedOperation xmi:type="uml:Operation" xmi:id="_qtEKQHxuEeOJEKG9thf66A" name="volatileIntOperation"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_ncNyoHxwEeOJEKG9thf66A" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_CTJY0HxxEeOJEKG9thf66A" name="registerOperation"> + <ownedComment xmi:type="uml:Comment" xmi:id="_93hZsHx-EeOJEKG9thf66A" annotatedElement="_CTJY0HxxEeOJEKG9thf66A"> + <body>Should not generate the 'register' keyword as it cannot be used in method signatures.</body> + </ownedComment> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_Fs7YEHxxEeOJEKG9thf66A" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_IX230HxyEeOJEKG9thf66A" name="externOperation" visibility="package"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_Nx8h8HxyEeOJEKG9thf66A" name="" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_CS78MCoZEeOncLSXAkfRBA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CTHiYCoZEeOncLSXAkfRBA" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/> + </profileApplication> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_oCdSgGNyEeO-Le8KnWSqzQ"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oCxbkGNyEeO-Le8KnWSqzQ" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/> + </profileApplication> + </uml:Model> + <C_Cpp:Const xmi:id="__KZ6YCrbEeOncLSXAkfRBA"/> + <C_Cpp:Ref xmi:id="_DmaysCrcEeOncLSXAkfRBA"/> + <C_Cpp:Const xmi:id="_v3ul0CtwEeOcwILjsIdkdw"/> + <C_Cpp:Inline xmi:id="_JIPJUCuIEeOcwILjsIdkdw" base_operation="_HtC9sCuIEeOcwILjsIdkdw"/> + <C_Cpp:Friend xmi:id="_2YLpACuaEeOcwILjsIdkdw" base_operation="_MZs6ECuIEeOcwILjsIdkdw"/> + <C_Cpp:Virtual xmi:id="_7PMbQCuaEeOcwILjsIdkdw" base_operation="_6QndgCt2EeOcwILjsIdkdw"/> + <C_Cpp:Virtual xmi:id="_aQVGICudEeOcwILjsIdkdw" base_operation="_Ub5CUCudEeOcwILjsIdkdw"/> + <C_Cpp:Ptr xmi:id="_m8i9QCuhEeOcwILjsIdkdw" base_parameter="_aK_y0CugEeOcwILjsIdkdw" declaration=""/> + <C_Cpp:Ref xmi:id="_Eba2ECuiEeOcwILjsIdkdw"/> + <C_Cpp:Ptr xmi:id="_e6lAACujEeOcwILjsIdkdw" base_property="_OIbRcCujEeOcwILjsIdkdw"/> + <C_Cpp:Ptr xmi:id="_lZJuECw0EeOcwILjsIdkdw" base_parameter="_jlwd0Cw0EeOcwILjsIdkdw"/> + <C_Cpp:Typedef xmi:id="_sIiEQCxBEeOcwILjsIdkdw" definition="char *" base_primitivetype="_lIB18CxBEeOcwILjsIdkdw"/> + <C_Cpp:Array xmi:id="_1DLcUCxHEeOcwILjsIdkdw" definition="[13]" base_property="_tJYOgCxHEeOcwILjsIdkdw"/> + <C_Cpp:Array xmi:id="_H5buoCxeEeOcwILjsIdkdw" definition="[11]={'h','e','l','l','o',' ','w','o','r','l','d'}" base_property="_CWUEUCxeEeOcwILjsIdkdw"/> + <C_Cpp:NoCodeGen xmi:id="_Sp100CxsEeOcwILjsIdkdw" base_element="_YZOWUCxoEeOcwILjsIdkdw"/> + <C_Cpp:StorageClass xmi:id="_2hBWsCxwEeOcwILjsIdkdw" storageClass="extern" base_Property="_u_QOYCxwEeOcwILjsIdkdw"/> + <C_Cpp:StorageClass xmi:id="_qngP8Cz9EeOcwILjsIdkdw" storageClass="extern" base_Property="_oxYb0Cz9EeOcwILjsIdkdw"/> + <C_Cpp:Include xmi:id="_FXyJoC0AEeOcwILjsIdkdw" header="#define helloworld 3" base_class="_ZqD3YCz9EeOcwILjsIdkdw"/> + <C_Cpp:Ptr xmi:id="_FeAvgDEIEeOSfbt-FmCdoQ" base_property="_f7m3YDECEeOSfbt-FmCdoQ"/> + <C_Cpp:StorageClass xmi:id="_DTjhgDG1EeOOEc5pE2t6oQ" base_Property="_mcsD4DG0EeOOEc5pE2t6oQ"/> + <C_Cpp:StorageClass xmi:id="_Fk6gIDG1EeOOEc5pE2t6oQ" storageClass="register" base_Property="_nXAXEDG0EeOOEc5pE2t6oQ"/> + <C_Cpp:StorageClass xmi:id="_G0M9wDG1EeOOEc5pE2t6oQ" storageClass="extern" base_Property="_ogWkwDG0EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_Q0fksjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_Q0fkszG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_Q2IjcjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_Q2IjczG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_Q2IjdzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_Q2RtYDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d20ykDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d20ykTG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d20ylDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d20ylTG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d20ymDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d20ymTG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d2-jkjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d2-jkzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d2-jljG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d2-jlzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d3HtgjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d3HtgzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d3uKcjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d3uKczG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d3uKdjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d3uKdzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_d33UYjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_d33UYzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_etR5cjG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_etR5czG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_etR5djG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_etbDYDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_etbDYzG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_etbDZDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_etk0YDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_etk0YTG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_etk0ZDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_etk0ZTG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_etk0aDG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_etk0aTG6EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_qyxSUDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_r2KpAjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_r2KpAzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_r2KpBjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_r2KpBzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_r2KpCjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_r2KpCzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_r2UaAjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_r2UaAzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_r2UaBjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_r2UaBzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_r2dj8DG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_r2dj8TG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3FPJgjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3FPJgzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3FPJhjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3FPJhzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3FPJijG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3FY6gDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3FY6gzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3FY6hDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3FiEcDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3FiEcTG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3FiEdDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3FiEdTG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3GIhYjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3GIhYzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3GIhZjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3GIhZzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3GRrUDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3GRrUTG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3w-1MjG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3w-1MzG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3xH_IDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3xH_ITG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3xH_JDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3xH_JTG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3xRwIDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3xRwITG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_3xRwKDG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_3xRwKTG_EeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_DH4cAjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_DH4cAzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_DH4cBjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_DH4cBzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_DICNAjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_DIL-ADHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_DIL-AzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_DIL-BDHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_kqZJYjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_kqZJYzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_kqZJZjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_kqZJZzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_kqiTUjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_kqiTUzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_kqiTVjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_kqiTVzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_oPzJ0DHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_oPzJ0THAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_oPzJ1DHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_oPzJ1THAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_oP8TwDHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_oP8TwTHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_oP8TxDHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_oP8TxTHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1x9HQjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1x9HQzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1x9HRjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1x9HRzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1yG4QjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1yG4QzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1yG4RjHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1yG4RzHAEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_PQYCYjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_PQYCYzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_PQYCZjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_PQhzYDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_PQhzYzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_PQhzZDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_PQhzZzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_PQq9UDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_Qln-EjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_Qln-EzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_Qln-FjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_Qln-FzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_QlxIAjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_QlxIAzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_QlxIBjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_QlxIBzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_S_c8MTHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_S_c8MjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_S_c8NTHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_S_c8NjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_S_mtMDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_S_mtMTHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_S_mtNDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_S_mtNTHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_arc-kjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_arc-kzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_arc-ljHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_arc-lzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_armIgjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_armIgzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_armIhjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_armIhzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_fveSEjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_fvoDEDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_fvoDEzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_fvoDFDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_fvoDFzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_fvx0EDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_fvx0EzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_fvx0FDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_n_6eQjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_n_6eQzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_n_6eRjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_n_6eRzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_oADoMjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_oADoMzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_oADoNjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_oADoNzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ptr xmi:id="_pmaiADHBEeOOEc5pE2t6oQ" base_property="_NBtLYDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_pzpswjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_pzpswzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_pzpsxjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_pzpsxzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_pzzdwjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_pzzdwzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_pzzdxjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_pzzdxzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_v-NKgjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_v-WUcDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_v-WUczHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_v-WUdDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_v-WUdzHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_v-WUeDHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_v-gFcjHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_v-gFczHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1Ixx8jHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1Ixx8zHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1I674jHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1I674zHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1I675jHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1I675zHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_1JEs4DHBEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_1JEs4THBEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_cqyjoDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_cqyjoTHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_cqyjpDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_cqyjpTHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_cqyjqDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_cq7tkDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_cq7tkzHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_cq7tlDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_ejACcjHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_ejACczHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_ejACdjHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_ejACdzHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_ejJMYjHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_ejJMYzHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_ejJMZjHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_ejJMZzHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_rPmQ4jHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_rPmQ4zHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_rPmQ5jHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_rPmQ5zHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_rPva0jHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_rPva0zHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_rPva1jHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_rPva1zHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_txm6oDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_txm6oTHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_txm6pDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_txm6pTHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_txm6qDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_txwroDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_txwrozHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_txwrpDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_vhye0jHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_vh7owDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_vh7owzHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_vh7oxDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_vh7oxzHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_vh7oyDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_viFZwDHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_viFZwTHCEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_V7aPojHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_V7aPozHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_V7aPpjHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_V7aPpzHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_V7jZkjHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_V7jZkzHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_V7jZljHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_V7jZlzHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_fgf6kDHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_f-HDojHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_f-HDozHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_f-HDpjHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_f-HDpzHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_f-QNkjHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_f-QNkzHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_f-QNljHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_f-QNlzHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_t4qS8jHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_t40D8DHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_t40D8zHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Ref xmi:id="_t40D9DHEEeOOEc5pE2t6oQ"/> + <C_Cpp:Const xmi:id="_uj4IQDHGEeOOEc5pE2t6oQ" base_operation="_fGJ2ADHGEeOOEc5pE2t6oQ"/> + <C_Cpp:Include xmi:id="_fO_McDHHEeOOEc5pE2t6oQ" body="#include <string.h>" header="#include <iostream>" base_class="_0E-t0CrKEeOncLSXAkfRBA"/> + <standard:Create xmi:id="_ts_zcGNyEeO-Le8KnWSqzQ" base_BehavioralFeature="_fvQ-oCraEeOncLSXAkfRBA"/> + <standard:Destroy xmi:id="_ugUt0GNyEeO-Le8KnWSqzQ" base_BehavioralFeature="_b2v08CraEeOncLSXAkfRBA"/> + <C_Cpp:Const xmi:id="_Xl-44GdrEeOvh505Y4rydA" base_parameter="_Xl6ncGdrEeOvh505Y4rydA"/> + <C_Cpp:Ref xmi:id="_XmBVIGdrEeOvh505Y4rydA" base_parameter="_Xl6ncGdrEeOvh505Y4rydA"/> + <C_Cpp:Const xmi:id="_XmGNoGdrEeOvh505Y4rydA" base_parameter="_XmDKUGdrEeOvh505Y4rydA"/> + <C_Cpp:Ref xmi:id="_XmJQ8GdrEeOvh505Y4rydA" base_parameter="_XmDKUGdrEeOvh505Y4rydA"/> + <C_Cpp:Ref xmi:id="_8FiZQGmnEeObBONB4_KErg" base_parameter="_6tK4IGmnEeObBONB4_KErg"/> + <C_Cpp:Ptr xmi:id="_4rG88GwcEeOUiKqqNL5BkQ" base_property="_u7S7ADHMEeOOEc5pE2t6oQ"/> + <standard:Create xmi:id="_gBWuEGweEeOUiKqqNL5BkQ" base_BehavioralFeature="_1ISAACudEeOcwILjsIdkdw"/> + <standard:Destroy xmi:id="_gt0LcGweEeOUiKqqNL5BkQ" base_BehavioralFeature="_du7T8CudEeOcwILjsIdkdw"/> + <standard:Destroy xmi:id="_7DEn8GweEeOUiKqqNL5BkQ" base_BehavioralFeature="_Ub5CUCudEeOcwILjsIdkdw"/> + <standard:Create xmi:id="_8zGbIGweEeOUiKqqNL5BkQ" base_BehavioralFeature="_HV3R8Ct2EeOcwILjsIdkdw"/> + <standard:Create xmi:id="_9_6zkGweEeOUiKqqNL5BkQ" base_BehavioralFeature="_8h2VwCt1EeOcwILjsIdkdw"/> + <C_Cpp:StorageClass xmi:id="_pH54YHxwEeOJEKG9thf66A" base_Parameter="_ncNyoHxwEeOJEKG9thf66A"/> + <C_Cpp:StorageClass xmi:id="_HmN08HxxEeOJEKG9thf66A" storageClass="register" base_Parameter="_Fs7YEHxxEeOJEKG9thf66A"/> + <C_Cpp:StorageClass xmi:id="_PWYJIHxyEeOJEKG9thf66A" storageClass="extern" base_Parameter="_Nx8h8HxyEeOJEKG9thf66A"/> +</xmi:XMI> diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/AllPapyrusCPPCodegenTests.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/AllPapyrusCPPCodegenTests.java new file mode 100644 index 00000000000..e20a2ce1097 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/AllPapyrusCPPCodegenTests.java @@ -0,0 +1,18 @@ +/*
+ * Copyright (c) 2014 Zeligsoft (2009) Limited.
+ * 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.cpp.codegen.tests;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({CppCodegenTest.class})
+public class AllPapyrusCPPCodegenTests {
+
+}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/CppCodegenTest.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/CppCodegenTest.java new file mode 100644 index 00000000000..45bf7332d02 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/CppCodegenTest.java @@ -0,0 +1,470 @@ +/*
+ * Copyright (c) 2014 Zeligsoft (2009) Limited.
+ * 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.cpp.codegen.tests;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Scanner;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.ui.URIEditorInput;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.acceleo.AcceleoDriver;
+import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
+import org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.services.openelement.service.OpenElementService;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.IImportStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CppCodegenTest {
+ static {
+ // This system property avoids opening dialogs during Papyrus operations. It must
+ // be set before trying to load any of the Papyrus classes.
+ System.setProperty("papyrus.run-headless", Boolean.TRUE.toString());
+ }
+
+ private static final String GENERATE_COMMAND_ID = "org.eclipse.papyrus.cpp.codegen.command";
+ private static final String EDITOR_ID = "org.eclipse.papyrus.infra.core.papyrusEditor";
+
+ private static final String ModelProjectName = "project";
+ private static final String ModelName = "CppCodegenTest.uml";
+ private static final String GenProjectName = "org.eclipse.papyrus.cppgen.CppCodegenTest";
+ private static final String GenFolderName = "CppCodegenTest";
+ private static final String ModelPath = "/" + ModelProjectName + '/' + ModelName;
+
+ private static final String ExpectedGenFolderName = "ExpectedModel";
+ private static final String ExpectedGenFolderPath = "/" + ModelProjectName + '/' + ExpectedGenFolderName;
+
+ private static final String Class1_fragment = "_x6ArECrKEeOncLSXAkfRBA";
+ private static final String Class2_fragment = "_0E-t0CrKEeOncLSXAkfRBA";
+ private static final String Class3_fragment = "_29UM4CrKEeOncLSXAkfRBA";
+ private static final String Class4_fragment = "_-j3HgCrKEeOncLSXAkfRBA";
+ private static final String Class5_fragment = "_hTMV0CumEeOcwILjsIdkdw";
+ private static final String Class6_fragment = "_OJ7A0CxUEeOcwILjsIdkdw";
+ private static final String Class7_fragment = "_ZqD3YCz9EeOcwILjsIdkdw";
+ private static final String Class8_fragment = "_qS9iYDEmEeOSfbt-FmCdoQ";
+ private static final String Class9_fragment = "_jcK5MDG0EeOOEc5pE2t6oQ";
+ private static final String Package1_fragment = "_nZ5DgDEmEeOSfbt-FmCdoQ";
+ private static final String Model_fragment = "_1_ToYCoNEeOncLSXAkfRBA";
+
+ private static final IProgressMonitor npm = new NullProgressMonitor();
+
+ private static IProject modelProject;
+ private static IProject genProject;
+ private static IHandlerService handlerService;
+ private static URI modelUri;
+ private static URI genCodeUri;
+ private static IWorkbenchPage page;
+ private static PapyrusMultiDiagramEditor editor;
+ private static OpenElementService elementActivator;
+ private static UmlModel model;
+
+ @BeforeClass
+ public static void loadProject() throws Exception {
+ if (modelProject != null)
+ cleanup();
+
+ handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
+
+ // Create a project to hold the model, make sure it has C++ natures to avoid confirmation
+ // dialog during code generation.
+ modelProject = ResourcesPlugin.getWorkspace().getRoot().getProject(ModelProjectName);
+ modelProject.create(npm);
+ modelProject.open(npm);
+
+ // Import the model files from this test plugin to the runtime workbench.
+ // NOTE: This test plugin is marked for deployment as a directory (Eclipse-BundleShape
+ // header in the MANIFEST.MF file) which means we can ignore the possibility of jar
+ // files here. We just find the location of the folder in which this bundle is
+ // deployed and then use the ImportOperation to copy all of the resources folder
+ // into the new project.
+ String location = TestPlugin.getInstance().getBundle().getLocation();
+ String resourcesPath = location.replaceAll("^reference:", "") + "resources";
+ Object source = new File(java.net.URI.create(resourcesPath));
+ IImportStructureProvider structureProvider = FileSystemStructureProvider.INSTANCE;
+
+ // Import the CPP .h and .cpp files from this test plugin to the runtime workbench.
+ // NOTE: This test plugin is marked for deployment as a directory (Eclipse-BundleShape
+ // header in the MANIFEST.MF file) which means we can ignore the possibility of jar
+ // files here. We just find the location of the folder in which this bundle is
+ // deployed and then use the ImportOperation to copy all of the resources folder
+ // into the new project.
+ ImportOperation operation1
+ = new ImportOperation(
+ modelProject.getFullPath(), source, structureProvider, null,
+ structureProvider.getChildren(source));
+ operation1.setOverwriteResources(true);
+ operation1.setCreateContainerStructure(false);
+ operation1.run(npm);
+ assertTrue("import failed: " + operation1.getStatus().getMessage(), operation1.getStatus().isOK());
+
+ String expectedGenPath = location.replaceAll("^reference:", "") + ExpectedGenFolderName;
+ source = new File(java.net.URI.create(expectedGenPath));
+
+ ImportOperation operation2 = new ImportOperation(
+ modelProject.getFullPath(), source, structureProvider, null, structureProvider.getChildren(source));
+ operation2.setOverwriteResources(true);
+ operation2.setCreateContainerStructure(false);
+ operation2.run(npm);
+ assertTrue("import failed: " + operation2.getStatus().getMessage(), operation2.getStatus().isOK());
+
+ // Setup the base modelUri for convenience in the test cases.
+ modelUri = URI.createPlatformResourceURI(ModelPath, true);
+ assertNotNull(modelUri);
+
+ // Get the currently active workbench page so we can control the editor that is about
+ // to be opened.
+ page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+
+ // Load the imported model to make it ready for later operations.
+ URIEditorInput input = new URIEditorInput(modelUri);
+ editor = (PapyrusMultiDiagramEditor) page.openEditor(input, EDITOR_ID);
+ assertNotNull(editor);
+
+ model = UmlUtils.getUmlModel();
+ assertNotNull(model);
+
+ // Model elements are selected with the appropriate service.
+ elementActivator = editor.getServicesRegistry().getService(OpenElementService.class);
+ assertNotNull(elementActivator);
+
+ //Setup the base genCodeUri for convenience in the test cases.
+ genCodeUri = URI.createPlatformPluginURI(ExpectedGenFolderPath, true);
+ assertNotNull(genCodeUri);
+
+ }
+
+ @AfterClass
+ public static void cleanup() throws Exception {
+ if (modelProject == null)
+ return;
+
+ // Close the editor without saving anything. This is required in order to avoid dialogs
+ // about "do you want to save these changes" when the project is deleted.
+ if (page != null)
+ page.closeAllEditors(false);
+
+ // Now we should be able to delete the project without opening any confirmation dialogs.
+ modelProject.delete(true, true, npm);
+ modelProject = null;
+ }
+
+ @Test
+ public void testGenerateClass1() throws Exception {
+ assertGenerate(Class1_fragment);
+ assertGeneratedMatchesExpected("Class1.h");
+ assertGeneratedMatchesExpected("Class1.cpp");
+ }
+
+ @Test
+ public void testGenerateClass2() throws Exception{
+ assertGenerate(Class2_fragment);
+ assertGeneratedMatchesExpected("Class2.h");
+ assertGeneratedMatchesExpected("Class2.cpp");
+ }
+
+ @Test
+ public void testGenerateClass3() throws Exception{
+ assertGenerate(Class3_fragment);
+ assertGeneratedMatchesExpected("Class3.h");
+ assertGeneratedMatchesExpected("Class3.cpp");
+ }
+
+ @Test
+ public void testGenerateClass4() throws Exception{
+ assertGenerate(Class4_fragment);
+ assertGeneratedMatchesExpected("Class4.h");
+ assertGeneratedMatchesExpected("Class4.cpp");
+ }
+
+ @Test
+ public void testGenerateClass5() throws Exception{
+ assertGenerate(Class5_fragment);
+ assertGeneratedMatchesExpected("Class5.h");
+ assertGeneratedMatchesExpected("Class5.cpp");
+ }
+
+ @Test
+ public void testGenerateClass6() throws Exception{
+ assertGenerate(Class6_fragment);
+ assertGeneratedMatchesExpected("Class6.h");
+ assertGeneratedMatchesExpected("Class6.cpp");
+ }
+
+ @Test
+ public void testGenerateClass7() throws Exception{
+ assertGenerate(Class7_fragment);
+ assertGeneratedMatchesExpected("Class7.h");
+ assertGeneratedMatchesExpected("Class7.cpp");
+ }
+
+ @Test
+ public void testGenerateClass8() throws Exception{
+ assertGenerate(Class8_fragment);
+ assertGeneratedMatchesExpected("Class8.h", "Package1");
+ assertGeneratedMatchesExpected("Class8.cpp", "Package1");
+ }
+
+ @Test
+ public void testGenerateClass9() throws Exception{
+ assertGenerate(Class9_fragment);
+ assertGeneratedMatchesExpected("Class9.h", "Package1");
+ assertGeneratedMatchesExpected("Class9.cpp", "Package1");
+ }
+
+ @Test
+ public void testGeneratePackage1NamespaceHeader() throws Exception{
+ assertGenerate(Package1_fragment);
+ assertGeneratedMatchesExpected("Pkg_Package1.h", "Package1");
+ }
+
+
+ @Test
+ public void testGenerateModelNamespaceHeader() throws Exception{
+ assertGenerate(Model_fragment);
+ assertGeneratedMatchesExpected("Pkg_CppCodegenTest.h");
+ }
+
+ private void assertGenerate(String fragment) throws Exception {
+ selectSemanticElement(fragment);
+ handlerService.executeCommand(GENERATE_COMMAND_ID, null);
+ assertFalse("Acceleo errors occured during code generation.", AcceleoDriver.hasErrors());
+ }
+
+ private void selectSemanticElement(String uriFragment) throws Exception {
+ URI elementUri = modelUri.appendFragment(uriFragment);
+ EObject semantic = model.getResource().getResourceSet().getEObject(elementUri, true);
+
+ // #openSemanticElement returns the editor if successful and null otherwise
+
+ // the open often fails if pages are passsed in, so we first try to open without specifying
+ // pages
+ IMultiDiagramEditor editor = elementActivator.openSemanticElement(semantic);//, pages.toArray());
+ assertNotNull(editor);
+
+ // If there isn't an active editor, then we try passing in the list of pages. From observation,
+ // this is needed on the first call (first test case) but causes problems on later ones.
+ if (editor.getActiveEditor() == null) {
+ ServicesRegistry registry = (ServicesRegistry) editor.getAdapter(ServicesRegistry.class);
+ assertNotNull(registry);
+
+ IPageManager pageManager = registry.getService(IPageManager.class);
+ assertNotNull(pageManager);
+
+ List<Object> pages = pageManager.allPages();
+ assertNotNull(pages);
+ assertTrue(pages.size() > 0);
+
+ editor = elementActivator.openSemanticElement(semantic, pages.toArray());
+ assertNotNull(editor);
+ }
+
+ // make sure there is an active editor so that the selection will be available
+ assertNotNull(editor.getActiveEditor());
+ }
+
+ private static String getFileContents(IFile file) throws CoreException {
+ InputStream inStream = file.getContents();
+ assertNotNull("Contents of file \""+file.getName()+"\" are empty.", inStream);
+ String content = null;
+ Scanner s = new Scanner(inStream);
+
+ s.useDelimiter("\\Z");
+
+ content= s.hasNext() ? s.next() : "";
+ s.close();
+
+ return content;// == null ? null : content.replaceAll("\\s+", " ").trim();
+ }
+
+ private IProject getGeneratedProject()
+ {
+ if( genProject != null )
+ return genProject;
+
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(GenProjectName);
+ if( project == null
+ || ! project.exists() )
+ throw new AssertionError( "Generated project not found" );
+
+ return genProject = project;
+ }
+
+
+ /**
+ * Compare the files in folder with what we expect to see. When comparing
+ * file content, filter out whitespace which will replace all whitespace
+ * with a single space in the actual file content and the expected file
+ * content in order to avoid problems with differences caused by code
+ * formatting options where the test suite is run. Then a simple string
+ * comparison is done.
+ */
+ private void assertGeneratedMatchesExpected(String fileName, String... depthSegments) throws Exception {
+ IFolder generatedFolder = getGeneratedProject().getFolder(GenFolderName);
+ assertTrue("Default generated folder \""+GenFolderName+"\" was not generated", generatedFolder.exists());
+
+ /*TEST-GENERATED PACKAGE FOLDER*/
+ IFolder generatedPackageFolder = null;
+ for(int i = 0; i < depthSegments.length ; i++){
+ if(i==0)
+ generatedPackageFolder = generatedFolder.getFolder(depthSegments[i]);
+ else
+ generatedPackageFolder = generatedPackageFolder.getFolder(depthSegments[i]);
+ assertTrue("Package folder \""+depthSegments[i]+"\" was not generated.", generatedPackageFolder.exists());
+ }
+
+ /*TEST-GENERATED FILE*/
+ IFile generatedFile = null;
+ if(generatedPackageFolder !=null){
+ generatedFile = generatedPackageFolder.getFile(fileName);
+ }else{
+ generatedFile = generatedFolder.getFile(fileName);
+ }
+ assertTrue("File "+fileName+" was not generated.", generatedFile.exists());
+ String fileContent = getFileContents(generatedFile);
+
+
+ /*PREVIOUSLY GENERATED PACKAGE FOLDER*/
+ IFolder expectedFolder = null;
+ for(int i = 0; i < depthSegments.length ; i++){
+ if(i==0)
+ expectedFolder = modelProject.getFolder(depthSegments[i]);
+ else
+ expectedFolder = expectedFolder.getFolder(depthSegments[i]);
+ assertTrue("Package folder \""+depthSegments[i]+"\" was not generated.", expectedFolder.exists());
+ }
+
+ /*PREVIOUSLY GENERATED FILE*/
+ IFile expectedFile = null;
+ if(expectedFolder != null){
+ expectedFile = expectedFolder.getFile(fileName);
+ }else{
+ expectedFile = modelProject.getFile(fileName);
+ }
+ assertTrue("File "+fileName+" was not generated.", expectedFile.exists());
+ String expectedFileContent = getFileContents(expectedFile);
+
+ assertContentMatches(fileName, fileContent, expectedFileContent);
+ }
+
+ private static void assertContentMatches(String filename, String generated, String expected){
+ Scanner expectedScanner = new Scanner(expected);
+ char[] strippedGen = generated.replaceAll("\\s+", "").trim().toCharArray();
+ int genCharsTraversed = 0;
+ boolean outofchars = false;
+
+ /*
+ * line by line in expected
+ * char by char in generated
+ * compare char by char expected to generated until no more chars in line
+ * if not matching then print line expected against line generated by
+ * keeping track of the amount of chars traversed, then traverse the
+ * generated with white characters
+ * */
+ try {
+ int lineNumber = 1;
+ int lineCharBegin = 0;
+ for( ; !outofchars && expectedScanner.hasNextLine(); ++lineNumber){
+ lineCharBegin = genCharsTraversed;
+ String eLine = expectedScanner.nextLine();
+ String strippedELine = eLine.replaceAll("\\s+", "").trim();
+ char[] strippedExpected = strippedELine.toCharArray();
+ for(int i =0; i < strippedExpected.length; i++){
+ if(strippedExpected[i] != strippedGen[genCharsTraversed]){
+ fail(filename + ':' + lineNumber + "expected '"+ eLine.trim() + "'but found '"+ rebuildStringForLineError(generated.trim(), eLine.trim(), i, genCharsTraversed, lineCharBegin)+"'");
+ }
+ genCharsTraversed++;
+ if(genCharsTraversed == strippedGen.length){
+ outofchars = true;
+ }
+ }
+ }
+ if(expectedScanner.hasNextLine()){
+ fail(filename + ':' + lineNumber + " expected '" + expectedScanner.nextLine() + "' but found end-of-file");
+ }else if(!outofchars){
+ fail(filename + ':' + lineNumber + " expected end-of-file but found '" + rebuildStringForEndOfFileError(generated.trim(), genCharsTraversed) + '\'');
+ }
+ } finally {
+ if (expectedScanner != null)
+ expectedScanner.close();
+ }
+ }
+
+ private static String rebuildStringForLineError(String generatedString, String expectedLine, int beginInExpectedLine, int genCharsTraversed, int firstCharInExpLine){
+ String brokenLine = "";
+
+ int lengthFromFirstDiff = expectedLine.replaceAll("\\s+", "").length()-beginInExpectedLine;
+ char[] generatedChars = generatedString.replaceAll("\\s+", " ").toCharArray();
+ int nonwhitechars = 0;
+ for(int i = 0; i < generatedChars.length; i++ ){
+ if(generatedChars[i] != ' ' ){
+ nonwhitechars++;
+ }
+ if(nonwhitechars >= firstCharInExpLine && nonwhitechars <genCharsTraversed+lengthFromFirstDiff){
+ //start copying
+ brokenLine+=generatedChars[i];
+ }else if(nonwhitechars == genCharsTraversed+lengthFromFirstDiff){
+ //copy number of characters for the length of the expected line
+ if(generatedChars[i+1]!='\0'){
+ brokenLine+="...";
+ }
+ break;
+ }
+ }
+
+ return brokenLine;
+ }
+
+ private static String rebuildStringForEndOfFileError(String generatedString, int genCharsTraversed) {
+ String brokenLine = "";
+
+ char[] generatedChars = generatedString.replaceAll("\\s+", " ").toCharArray();
+ int nonwhitechars = 0;
+ for(int i = 0; i < generatedChars.length; i++ ){
+ if(generatedChars[i] != ' ' ){
+ nonwhitechars++;
+ }
+ if(nonwhitechars > genCharsTraversed && generatedChars[i]!='\0'){
+ //start copying
+ brokenLine+=generatedChars[i];
+ }else if(nonwhitechars == genCharsTraversed+15 || generatedChars[i]=='\0'){
+ //copy only 15 chars
+ if(generatedChars[i+1]!='\0'){
+ brokenLine+="...";
+ }
+ break;
+ }
+ }
+ return brokenLine;
+ }
+}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/TestPlugin.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/TestPlugin.java new file mode 100644 index 00000000000..41c19d38637 --- /dev/null +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.tests/src/org/eclipse/papyrus/cpp/codegen/tests/TestPlugin.java @@ -0,0 +1,23 @@ +/*
+ * Copyright (c) 2014 Zeligsoft (2009) Limited.
+ * 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.cpp.codegen.tests;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+public class TestPlugin extends AbstractUIPlugin {
+
+ private static TestPlugin instance;
+
+ public TestPlugin() {
+ instance = this;
+ }
+
+ public static TestPlugin getInstance() {
+ return instance;
+ }
+}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handlers/GenerateCodeHandler.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handlers/GenerateCodeHandler.java index 02f19132da9..9f463b7ac17 100644 --- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handlers/GenerateCodeHandler.java +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handlers/GenerateCodeHandler.java @@ -40,6 +40,8 @@ import org.eclipse.uml2.uml.PackageableElement; */ public class GenerateCodeHandler extends CmdHandler { + private static final boolean Headless = Boolean.getBoolean("papyrus.run-headless"); + // ------------------------------------------------------------------------ // Execution // ------------------------------------------------------------------------ @@ -128,7 +130,7 @@ public class GenerateCodeHandler extends CmdHandler { CppModelElementsCreator mec = new CppModelElementsCreator(modelProject); generate(mec, pe, new BasicEList<PackageableElement>(), true); - if (AcceleoDriver.hasErrors()) { + if (AcceleoDriver.hasErrors() && !Headless) { MessageDialog.openInformation(new Shell(), "Errors during code generation", //$NON-NLS-1$ "Errors occured during code generation. Please check the error log"); //$NON-NLS-1$ } diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/LocateCppProject.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/LocateCppProject.java index 570ba6a0727..fa0b92c3409 100644 --- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/LocateCppProject.java +++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/LocateCppProject.java @@ -30,6 +30,8 @@ import org.eclipse.uml2.uml.PackageableElement; public class LocateCppProject { public static final String LANGUAGE_NAME = "C++"; //$NON-NLS-1$ + private static final boolean Headless = Boolean.getBoolean("papyrus.run-headless"); + /** * Locate and return the target project for the given packageable element. Return null if * no target project can be found. @@ -38,10 +40,10 @@ public class LocateCppProject { * not create a new project, but may modify existing ones. * * @param pe a packageable element within a model - * @param interactive if true, ask the user to apply the C++ nature if required. + * @param createIfMissing if true, ask the user to apply the C++ nature if required. * @return the associated project, if the C++ nature is applied. */ - public static IProject getTargetProject(PackageableElement pe, boolean interactive) { + public static IProject getTargetProject(PackageableElement pe, boolean createIfMissing) { // URI uri = pe.eResource().getURI(); Package rootPkg = PackageUtil.getRootPackage(pe); @@ -57,30 +59,56 @@ public class LocateCppProject { String projectName = prefix + rootPkg.getName(); IProject modelProject = root.getProject(projectName); if(!modelProject.exists()) { - boolean create = interactive && MessageDialog.openQuestion(new Shell(), - Messages.LocateCppProject_CreateTargetProjectTitle, - String.format(Messages.LocateCppProject_CreateTargetProjectDesc, projectName)); - if (create) { - ILangSupport langSupport = LanguageSupport.getLangSupport(LANGUAGE_NAME); - if (langSupport != null) { - langSupport.resetConfigurationData(); - modelProject = langSupport.createProject(projectName, null); + if (Headless) + { + try + { + modelProject.create(null); + } + catch( CoreException e ) + { + return null; + } + } + else + { + boolean create = createIfMissing && MessageDialog.openQuestion(new Shell(), + Messages.LocateCppProject_CreateTargetProjectTitle, + String.format(Messages.LocateCppProject_CreateTargetProjectDesc, projectName)); + if (create) { + ILangSupport langSupport = LanguageSupport.getLangSupport(LANGUAGE_NAME); + if (langSupport != null) { + langSupport.resetConfigurationData(); + modelProject = langSupport.createProject(projectName, null); + } + else { + return null; + } } else { return null; } } - else { + } + + // Make sure the target project is open. If it was just created then it is likely open, + // however if it is an old project then it could have been closed. + if( ! modelProject.isOpen() ) + try + { + modelProject.open( null ); + } + catch( CoreException e ) + { return null; } - } - + // Make sure the target project has the C and C++ build natures. try { if(!modelProject.hasNature(CCProjectNature.CC_NATURE_ID)) { - boolean apply = interactive && MessageDialog.openQuestion(new Shell(), + boolean apply = createIfMissing && (Headless || MessageDialog.openQuestion(new Shell(), Messages.LocateCppProject_ApplyCNatureTitle, - Messages.LocateCppProject_ApplyCNatureDesc); + Messages.LocateCppProject_ApplyCNatureDesc)); if (!apply) { return null; } diff --git a/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/META-INF/MANIFEST.MF b/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/META-INF/MANIFEST.MF index 2844ae19c38..0c68b0febf2 100644 --- a/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/META-INF/MANIFEST.MF +++ b/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/META-INF/MANIFEST.MF @@ -7,7 +7,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.papyrus.cdo.tests;bundle-version="1.0.0",
org.eclipse.papyrus.cdo.ui.tests;bundle-version="1.0.0",
org.eclipse.papyrus.cdo.uml.ui.tests;bundle-version="1.0.0",
- org.eclipse.papyrus.cdo.validation.problems.tests;bundle-version="1.0.0"
+ org.eclipse.papyrus.cdo.validation.problems.tests;bundle-version="1.0.0",
+ org.eclipse.papyrus.cpp.codegen.tests;bundle-version="1.0.0"
Bundle-Vendor: Eclipse Modeling Project
Bundle-ActivationPolicy: lazy
Bundle-Version: 1.0.0.qualifier
diff --git a/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/src/org/eclipse/papyrus/tests/extra/AllTests.java b/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/src/org/eclipse/papyrus/tests/extra/AllTests.java index 14f733e1eae..b204aa287e0 100644 --- a/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/src/org/eclipse/papyrus/tests/extra/AllTests.java +++ b/tests/junit/extraplugins/org.eclipse.papyrus.tests.extra/src/org/eclipse/papyrus/tests/extra/AllTests.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.Collection;
import java.util.List;
+import org.eclipse.papyrus.cpp.codegen.tests.AllPapyrusCPPCodegenTests;
import org.eclipse.papyrus.tests.extra.launcher.ITestSuiteClass;
import org.eclipse.papyrus.tests.extra.launcher.PluginTestSuiteClass;
import org.junit.runner.RunWith;
@@ -35,6 +36,9 @@ public class AllTests { /* CDO tests */
suiteClasses.add(new PluginTestSuiteClass(org.eclipse.papyrus.cdo.tests.AllTests.class));
+ /* CPP Codegen tests */
+ suiteClasses.add(new PluginTestSuiteClass(AllPapyrusCPPCodegenTests.class));
+
/* UML Compare tests */
/**
* UML Compare tests have been temporarily disabled. See:
@@ -47,7 +51,6 @@ public class AllTests { // suiteClasses.add(new PluginTestSuiteClass(org.eclipse.papyrus.uml.compare.diff.tests.AllTests.class));
/* **************** plugins *********************** */
-
}
/**
@@ -59,7 +62,7 @@ public class AllTests { * Constructor.
*
* @param clazz
- * the suite class – AllTests2
+ * the suite class � AllTests2
* @throws InitializationError
* if there's a problem
* @throws org.junit.runners.model.InitializationError
|