Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2014-12-10 15:51:11 +0000
committerAnsgar Radermacher2014-12-10 15:52:24 +0000
commit7b37bcef77fb8df6053f8543f4eb6ea32704558c (patch)
tree4b3f495acb632925d585deb869c1653304d247d9 /extraplugins/codegen/org.eclipse.papyrus.cpp.codegen
parent275c037cb797ab8054fb16711737062f7213cdde (diff)
downloadorg.eclipse.papyrus-7b37bcef77fb8df6053f8543f4eb6ea32704558c.tar.gz
org.eclipse.papyrus-7b37bcef77fb8df6053f8543f4eb6ea32704558c.tar.xz
org.eclipse.papyrus-7b37bcef77fb8df6053f8543f4eb6ea32704558c.zip
454729 - [C++ codegen] refactoring after xtend migration
Diffstat (limited to 'extraplugins/codegen/org.eclipse.papyrus.cpp.codegen')
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF4
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppLocationStrategy.java30
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppModelElementsCreator.java151
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java4
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/LocateCppProject.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend28
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.xtend13
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.xtend13
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.xtend157
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.xtend66
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.xtend100
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend30
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.xtend33
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.xtend13
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.xtend15
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/.gitignore1
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.java34
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.java14
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.java14
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.java16
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.java210
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.java92
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.java139
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.java2
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.java22
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.java35
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.java10
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.java12
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.java12
50 files changed, 688 insertions, 816 deletions
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF
index 8d2811f854e..597d0ecf014 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF
@@ -7,7 +7,6 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.papyrus.cpp.profile;bundle-version="1.1.0",
org.eclipse.ui.ide;bundle-version="3.8.0",
org.eclipse.core.filesystem;bundle-version="1.3.200",
- org.eclipse.papyrus.acceleo;bundle-version="1.1.0",
org.eclipse.cdt.core;resolution:=optional,
org.eclipse.papyrus.infra.core.log;bundle-version="1.1.0",
org.eclipse.papyrus.uml.tools.utils;bundle-version="1.1.0",
@@ -15,7 +14,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.xtend.lib,
com.google.guava;bundle-version="11.0.0",
org.eclipse.xtext.xbase.lib,
- org.eclipse.uml2.uml.profile.standard;bundle-version="1.0.0"
+ org.eclipse.uml2.uml.profile.standard;bundle-version="1.0.0",
+ org.eclipse.papyrus.codegen.base;bundle-version="1.1.0"
Export-Package: org.eclipse.papyrus.cpp.codegen;uses:="org.eclipse.ui.plugin,org.osgi.framework,org.eclipse.uml2.uml",
org.eclipse.papyrus.cpp.codegen.preferences;uses:="org.eclipse.jface.preference,org.eclipse.core.runtime.preferences",
org.eclipse.papyrus.cpp.codegen.transformation;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java
index f4c257d11f9..e4eb95cb09b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java
@@ -40,4 +40,6 @@ public class Constants {
// support the languages "C++", "C/C++" as well as "cpp". The '+' needs to be escaped in a regular epression
public static final Pattern supportedLanguages = Pattern.compile("C\\+\\+|C/C\\+\\+|cpp"); //$NON-NLS-1$
+
+ public static final String DOT = "."; //$NON-NLS-1$
}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java
index af748292f8d..2251eff6290 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java
@@ -11,7 +11,7 @@
package org.eclipse.papyrus.cpp.codegen;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.NamedElement;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppLocationStrategy.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppLocationStrategy.java
new file mode 100644
index 00000000000..ccddad6f9cc
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppLocationStrategy.java
@@ -0,0 +1,30 @@
+package org.eclipse.papyrus.cpp.codegen.transformation;
+
+import org.eclipse.papyrus.codegen.base.HierarchyLocationStrategy;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+
+
+public class CppLocationStrategy extends HierarchyLocationStrategy {
+
+ public static final String PKG_PREFIX = "Pkg_"; //$NON-NLS-1$
+
+ /**
+ * Return the filename for a given named element.
+ *
+ * @param element
+ * a named element
+ * @return filename for this element
+ */
+ public String getFileName(NamedElement element) {
+ if (element instanceof Package) {
+ // specific prefix for packages
+ String folder = super.getFileName(element);
+ if (folder.length() > 0) {
+ folder += HierarchyLocationStrategy.SEP_CHAR;
+ }
+ return folder + PKG_PREFIX + element.getName();
+ }
+ else return super.getFileName(element);
+ }
+}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppModelElementsCreator.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppModelElementsCreator.java
index 52a72afd31f..6763012a97b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppModelElementsCreator.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppModelElementsCreator.java
@@ -14,8 +14,6 @@ package org.eclipse.papyrus.cpp.codegen.transformation;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ToolFactory;
import org.eclipse.cdt.core.formatter.CodeFormatter;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -23,46 +21,57 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
-import org.eclipse.papyrus.C_Cpp.CppRoot;
import org.eclipse.papyrus.C_Cpp.ExternLibrary;
import org.eclipse.papyrus.C_Cpp.External;
+import org.eclipse.papyrus.C_Cpp.Include;
+import org.eclipse.papyrus.C_Cpp.ManualGeneration;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
-import org.eclipse.papyrus.acceleo.GenUtils;
-import org.eclipse.papyrus.acceleo.ModelElementsCreator;
+import org.eclipse.papyrus.C_Cpp.Template;
+import org.eclipse.papyrus.codegen.base.GenUtils;
+import org.eclipse.papyrus.codegen.base.ModelElementsCreator;
+import org.eclipse.papyrus.codegen.base.ProjectBasedFileAccess;
import org.eclipse.papyrus.cpp.codegen.Activator;
+import org.eclipse.papyrus.cpp.codegen.Constants;
import org.eclipse.papyrus.cpp.codegen.Messages;
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassifierGenerator;
import org.eclipse.papyrus.cpp.codegen.xtend.CppPackageHeaderGenerator;
import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.TextEdit;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Element;
-import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Enumeration;
import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Relationship;
+import org.eclipse.uml2.uml.Signal;
+import org.eclipse.uml2.uml.SignalEvent;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.util.UMLUtil;
/**
* Main class of code generator
*
+ * @author Ansgar Radermacher (ansgar.radermacher@cea.fr)
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
*/
public class CppModelElementsCreator extends ModelElementsCreator {
- public static final String DOT = "."; //$NON-NLS-1$
-
/**
*
* Constructor.
*
* @param project
- * the project in which the generated code should be placed
+ * the project in which the generated code should be placed
*/
public CppModelElementsCreator(IProject project) {
- super(project, CppCodeGenUtils.getCommentHeader());
- hppExt = CppCodeGenUtils.getHeaderSuffix();
- cppExt = CppCodeGenUtils.getBodySuffix();
+ this(project, CppCodeGenUtils.getCommentHeader());
+
}
/**
@@ -70,12 +79,14 @@ public class CppModelElementsCreator extends ModelElementsCreator {
* Constructor.
*
* @param project
- * the project in which the generated code should be placed
+ * the project in which the generated code should be placed
* @param commentHeader
- * Custom prefix for each generated file
+ * Custom prefix for each generated file
*/
public CppModelElementsCreator(IProject project, String commentHeader) {
- super(project, commentHeader);
+ super(project, new ProjectBasedFileAccess(), new CppLocationStrategy());
+ ((ProjectBasedFileAccess) fsa).setProject(project);
+ this.commentHeader = commentHeader;
hppExt = CppCodeGenUtils.getHeaderSuffix();
cppExt = CppCodeGenUtils.getBodySuffix();
}
@@ -85,6 +96,7 @@ public class CppModelElementsCreator extends ModelElementsCreator {
protected String cppExt;
+ protected String commentHeader;
/**
* Creates the files corresponding to the class. For a "simple" class
@@ -96,18 +108,95 @@ public class CppModelElementsCreator extends ModelElementsCreator {
* @param classifier
* @throws CoreException
*/
- protected void createClassifierFiles(IContainer container, Classifier classifier) throws CoreException {
- CppClassifierGenerator.generate(container, classifier, commentHeader);
+ @Override
+ protected void createPackageableElementFile(PackageableElement element, IProgressMonitor monitor) {
+ if (element instanceof Package) {
+ generatePkg((Package) element);
+ }
+
+ else if ((element instanceof PrimitiveType) || (element instanceof Enumeration) || (element instanceof Usage)) {
+ // do nothing, included in package
+ }
+ else if (element instanceof Classifier) {
+ generateClassifier((Classifier) element);
+ }
+ else if (element instanceof Relationship) {
+ // no code generation for relationships
+ }
+ else if (element instanceof Signal) {
+ // TODO: not supported, but do nothing
+ }
+ else if (element instanceof SignalEvent) {
+ // TODO: not supported, but do nothing
+ }
+ else {
+ Activator.log.debug("C++ code generator: unsupported model element " + element); //$NON-NLS-1$
+ }
}
- @Override
- protected void createFile(IFile file, String content, boolean force) throws CoreException {
- String formatted = format(content);
- super.createFile(file, formatted, force);
+ protected void generateClassifier(Classifier classifier) {
+
+ // treat case of manual code generation
+ if (GenUtils.hasStereotype(classifier, ManualGeneration.class)) {
+ final ManualGeneration mg = UMLUtil.getStereotypeApplication(classifier, ManualGeneration.class);
+ final Include cppInclude = UMLUtil.getStereotypeApplication(classifier, Include.class);
+ final String fileContentH = commentHeader + cppInclude.getHeader();
+
+ // generate header code
+ final String fileNameH = locStrategy.getFileName(classifier) + Constants.DOT + hppExt;
+
+ generateFile(fileNameH, fileContentH);
+
+ // generate body code
+ String fileContentB = commentHeader +
+ cppInclude.getPreBody() + GenUtils.NL +
+ cppInclude.getBody() + GenUtils.NL;
+ String ext = GenUtils.maskNull(mg.getExtensionBody());
+ if (ext.length() == 0) {
+ ext = cppExt;
+ }
+ String fileNameB = locStrategy.getFileName(classifier) + Constants.DOT + ext;
+ generateFile(fileNameB, fileContentB);
+ }
+
+ // Only generate when no CppNoCodeGen stereotype is applied to the class
+ else if ((!noCodeGen(classifier)) && (!GenUtils.hasStereotype(classifier, Template.class)) &&
+ (!(classifier instanceof Association))) {
+
+ // Template Bound Class
+ if (GenUtils.isTemplateBoundElement(classifier)) {
+ final String bindHeaderFileName = locStrategy.getFileName(classifier) + Constants.DOT + hppExt;
+ generateFile(bindHeaderFileName, commentHeader + CppClassifierGenerator.generateBindHeaderCode(classifier));
+
+ final String bindBodyFileName = classifier.getName() + Constants.DOT + cppExt;
+ generateFile(bindBodyFileName, commentHeader + CppClassifierGenerator.generateBindBodyCode(classifier));
+ }
+ else {
+
+ // Class Header file generation
+ final String classHeaderFileName = locStrategy.getFileName(classifier) + Constants.DOT + hppExt;
+ generateFile(classHeaderFileName, commentHeader + CppClassifierGenerator.generateClassHeaderCode(classifier));
+
+ // Class Body file generation
+ if (classifier instanceof Class) {
+ final String classBodyFileName = locStrategy.getFileName(classifier) + Constants.DOT + cppExt;
+ generateFile(classBodyFileName, commentHeader + CppClassifierGenerator.generateClassBodyCode(classifier));
+ }
+ }
+ }
+ }
+
+ protected void generatePkg(Package pkg) {
+ final String fileName = locStrategy.getFileName(pkg) + Constants.DOT + hppExt;
+ generateFile(fileName, CppPackageHeaderGenerator.generateCode(pkg).toString());
+ }
+
+ protected void generateFile(String fileName, String content) {
+ fsa.generateFile(fileName, format(content));
}
/**
- * Apply the user's currently selected formatting options to the input content. Return the
+ * Apply the user's currently selected formatting options to the input content. Return the
* input String in case of error.
*/
private static String format(String content) {
@@ -134,24 +223,14 @@ public class CppModelElementsCreator extends ModelElementsCreator {
} catch (BadLocationException e) {
Activator.log.error(e);
}
-
return content;
}
- @Override
- protected void createPackageFiles(IContainer packageContainer, IProgressMonitor monitor, Package pkg) throws CoreException {
- CppPackageHeaderGenerator.generate(packageContainer, pkg);
+ protected boolean noCodeGen(Element element) {
+ return GenUtils.hasStereotype(element, NoCodeGen.class) ||
+ GenUtils.hasStereotype(element, External.class) ||
+ GenUtils.hasStereotypeTree(element, ExternLibrary.class);
}
- protected boolean isRoot(Namespace ns) {
- return GenUtils.hasStereotype(ns, CppRoot.class);
- }
-
- protected boolean noCodeGen(Element element) {
- return
- GenUtils.hasStereotype(element, NoCodeGen.class) ||
- GenUtils.hasStereotype(element, External.class) ||
- GenUtils.hasStereotypeTree(element, ExternLibrary.class);
- }
}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java
index ce009fc9a29..e4f18d52ecf 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java
@@ -13,7 +13,7 @@ package org.eclipse.papyrus.cpp.codegen.utils;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.UniqueEList;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Interface;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
index 4e430b1fea0..9dd72f63bd6 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
@@ -20,7 +20,7 @@ import org.eclipse.papyrus.C_Cpp.External;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
import org.eclipse.papyrus.C_Cpp.Typedef;
import org.eclipse.papyrus.C_Cpp.Visibility;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.ClassifierTemplateParameter;
import org.eclipse.uml2.uml.ConnectableElementTemplateParameter;
@@ -250,7 +250,7 @@ public class CppGenUtils {
openNS = "namespace " + ne.getName() + " {\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
for (Namespace ns : ne.allNamespaces()) {
- if (ns.getOwner() != null) {
+ if (ns.getOwner() != null) { // skip top-level package (useful?)
openNS = "namespace " + ns.getName() + " {\n" + openNS; //$NON-NLS-1$ //$NON-NLS-2$
}
}
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 5b7f85d519b..d3d1bf77c39 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
@@ -31,7 +31,7 @@ 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");
+ private static final boolean Headless = Boolean.getBoolean("papyrus.run-headless"); //$NON-NLS-1$
/**
* Locate and return the target project for the given packageable element. Return null if
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
index 9bae2e942d6..d7e83cb6cbc 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
@@ -16,7 +16,7 @@ import org.eclipse.papyrus.C_Cpp.Const;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.C_Cpp.Ref;
import org.eclipse.papyrus.C_Cpp.Volatile;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils;
import org.eclipse.uml2.uml.AggregationKind;
import org.eclipse.uml2.uml.Element;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend
index 2f7dd1c9e5b..da77fce07c8 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend
@@ -1,4 +1,15 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Classifier
import org.eclipse.uml2.uml.Class
@@ -6,7 +17,7 @@ import org.eclipse.uml2.uml.DataType
import org.eclipse.uml2.uml.Interface
import org.eclipse.uml2.uml.Signal
import org.eclipse.uml2.uml.Property
-import org.eclipse.papyrus.acceleo.GenUtils
+import org.eclipse.papyrus.codegen.base.GenUtils
import org.eclipse.papyrus.C_Cpp.Const
import org.eclipse.papyrus.cpp.codegen.utils.Modifier
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
@@ -30,8 +41,19 @@ class CppAttribute {
return code
}
- //return a list of owned attributes, since this is not supported directly on a classifier
+ // return a list of owned attributes, empty set, if null
static def getOwnedAttributes(Classifier cl) {
+ val attributes = getOwnedAttributesWNull(cl)
+ if (attributes == null) {
+ emptySet
+ }
+ else {
+ attributes
+ }
+ }
+
+ // return a list of owned attributes, since this is not supported directly on a classifier
+ static def getOwnedAttributesWNull(Classifier cl) {
if (cl instanceof Class) {
(cl as Class).ownedAttributes
} else if (cl instanceof DataType) {
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.xtend
index d272163fb1f..06990f4229b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.xtend
@@ -1,4 +1,15 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Classifier
import org.eclipse.uml2.uml.VisibilityKind
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend
index d754cf6f4d8..eafcc2b3cc7 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend
@@ -1,10 +1,21 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Classifier
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.C_Cpp.Friend
import org.eclipse.papyrus.C_Cpp.NoCodeGen
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.xtend
index 1ec45f63da6..ab952f290cb 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.xtend
@@ -1,7 +1,17 @@
package org.eclipse.papyrus.cpp.codegen.xtend
-import org.eclipse.papyrus.C_Cpp.CppRoot
-import org.eclipse.papyrus.acceleo.GenUtils
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ import org.eclipse.papyrus.C_Cpp.CppRoot
import org.eclipse.uml2.uml.Package
import org.eclipse.uml2.uml.Classifier
import org.eclipse.emf.common.util.EList
@@ -12,6 +22,7 @@ import org.eclipse.uml2.uml.PrimitiveType
import java.util.List
import java.util.ArrayList
import org.eclipse.papyrus.cpp.codegen.utils.ClassUtils
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.xtend
index a612b90f92a..a07a939e125 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.xtend
@@ -1,14 +1,25 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import java.util.ArrayList
import java.util.List
import org.eclipse.papyrus.C_Cpp.ExternLibrary
import org.eclipse.papyrus.C_Cpp.External
import org.eclipse.papyrus.C_Cpp.Template
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils
import org.eclipse.uml2.uml.NamedElement
import org.eclipse.uml2.uml.util.UMLUtil
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.xtend
index 01cbd24bb6f..d4f3a2fa4f6 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.xtend
@@ -1,14 +1,25 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.papyrus.C_Cpp.NoCodeGen
import org.eclipse.papyrus.C_Cpp.Visibility
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.uml2.uml.Classifier
import org.eclipse.uml2.uml.Generalization
import org.eclipse.uml2.uml.InterfaceRealization
import org.eclipse.uml2.uml.Relationship
import org.eclipse.uml2.uml.util.UMLUtil
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.xtend
index e986acbb236..e907a740a30 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.xtend
@@ -1,4 +1,15 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Classifier
import org.eclipse.uml2.uml.OpaqueBehavior
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.xtend
index abb5ae392fa..29b1b3916a0 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.xtend
@@ -1,10 +1,21 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Classifier
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.C_Cpp.NoCodeGen
import org.eclipse.uml2.uml.OpaqueBehavior
import org.eclipse.papyrus.C_Cpp.Inline
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.xtend
index f3e1a8d3d5c..0d02c71a5a5 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.xtend
@@ -1,7 +1,17 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.papyrus.C_Cpp.NoCodeGen
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
import org.eclipse.uml2.uml.Classifier
import org.eclipse.uml2.uml.Element
@@ -10,6 +20,7 @@ import org.eclipse.uml2.uml.Namespace
import org.eclipse.uml2.uml.Package
import org.eclipse.uml2.uml.PrimitiveType
import org.eclipse.uml2.uml.VisibilityKind
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.xtend
index f2860230b23..633f6c52673 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.xtend
@@ -1,100 +1,38 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
-import org.eclipse.core.resources.IContainer
-import org.eclipse.papyrus.C_Cpp.ExternLibrary
-import org.eclipse.papyrus.C_Cpp.External
-import org.eclipse.papyrus.C_Cpp.Include
-import org.eclipse.papyrus.C_Cpp.ManualGeneration
-import org.eclipse.papyrus.C_Cpp.NoCodeGen
-import org.eclipse.papyrus.C_Cpp.Template
import org.eclipse.papyrus.C_Cpp.Union
-import org.eclipse.papyrus.acceleo.GenUtils
+import org.eclipse.papyrus.codegen.base.GenUtils
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
-import org.eclipse.uml2.uml.Association
import org.eclipse.uml2.uml.Class
import org.eclipse.uml2.uml.Classifier
import org.eclipse.uml2.uml.DataType
-import org.eclipse.uml2.uml.Element
import org.eclipse.uml2.uml.NamedElement
import org.eclipse.uml2.uml.VisibilityKind
import org.eclipse.uml2.uml.profile.standard.Create
-import org.eclipse.uml2.uml.util.UMLUtil
-import org.eclipse.papyrus.acceleo.AcceleoDriver
-import org.eclipse.papyrus.cpp.codegen.transformation.CppModelElementsCreator
/**
- * @author Önder GÜRCAN (onder.gurcan@cea.fr)
+ * @author Ansgar Radermacher (ansgar.radermacher@cea.fr)
*/
-class CppClassifierGenerator extends CppFileGenerator {
+class CppClassifierGenerator {
- static def generate(IContainer container, Classifier classifier, String commentHeader) {
+ static def generateHeaderCode(Classifier classifier, String commentHeader) '''
+ «commentHeader»
+ AcceleoDriver.evaluate(cppInclude.getHeader(), classifier, null);
+ '''
- // treat case of manual code generation
- if (GenUtils.hasStereotype(classifier, ManualGeneration)) {
- var ManualGeneration mg = UMLUtil.getStereotypeApplication(classifier, ManualGeneration);
- var Include cppInclude = UMLUtil.getStereotypeApplication(classifier, Include);
- var fileContentH = commentHeader +
- AcceleoDriver.evaluate(cppInclude.getHeader(), classifier, null);
-
- // generate header code
- val fileNameH = classifier.getName() + CppModelElementsCreator.DOT + CppCodeGenUtils.getHeaderSuffix()
- generateFile(container, fileNameH, fileContentH, true);
-
- // generate body code
- val fileContentB = commentHeader +
- AcceleoDriver.evaluate(cppInclude.getPreBody(), classifier, null) + GenUtils.NL +
- AcceleoDriver.evaluate(cppInclude.getBody(), classifier, null) + GenUtils.NL;
- var ext = GenUtils.maskNull(mg.getExtensionBody());
- if (ext.length() == 0) {
- ext = CppCodeGenUtils.getBodySuffix();
- }
- val fileNameB = classifier.getName() + CppModelElementsCreator.DOT + ext;
- generateFile(container, fileNameB, fileContentB, true);
- }
-
- // Only generate when no CppNoCodeGen stereotype is applied to the class
- else if ((!classifier.noCodeGen) && (!GenUtils.hasStereotype(classifier, Template)) &&
- (!(classifier instanceof Association))) {
-
- // Template Bound Class
- if (GenUtils.isTemplateBoundElement(classifier)) {
- val bindHeaderFileName = classifier.getName() + "." + CppCodeGenUtils.getHeaderSuffix()
- generateFile(container, bindHeaderFileName, commentHeader + classifier.generateBindHeaderCode, true);
-
- var bindBodyFileName = classifier.getName() + "." + CppCodeGenUtils.getBodySuffix()
- generateFile(container, bindBodyFileName, commentHeader + classifier.generateBindBodyCode, true);
- }
- else {
-
- // Class Header file generation
- val classHeaderFileName = classifier.getName() + "." + CppCodeGenUtils.getHeaderSuffix()
- generateFile(container, classHeaderFileName, commentHeader + classifier.generateClassHeaderCode, true);
-
- // Class Body file generation
- if (classifier instanceof Class) {
- var classBodyFileName = classifier.getName() + "." + CppCodeGenUtils.getBodySuffix()
- generateFile(container, classBodyFileName, commentHeader + classifier.generateClassBodyCode, true);
- }
- }
- }
- }
-
- static def noCodeGen(Element element) {
- return GenUtils.hasStereotype(element, NoCodeGen) || GenUtils.hasStereotype(element, External) ||
- GenUtils.hasStereotypeTree(element, ExternLibrary);
- }
-
- static def generateHeaderCode(Classifier classifier, String commentHeader) {
- var code = '''
- «commentHeader»
- AcceleoDriver.evaluate(cppInclude.getHeader(), classifier, null);
- '''
- return code
- }
-
- static def generateBindHeaderCode(Classifier classifier) {
- var code = '''
+ static def generateBindHeaderCode(Classifier classifier) '''
#ifndef «GenUtils.getFullNameUC(classifier)»_H
#define «GenUtils.getFullNameUC(classifier)»_H
@@ -127,17 +65,15 @@ class CppClassifierGenerator extends CppFileGenerator {
End of «classifier.name» template binding header
************************************************************/
- #endif'''
- return code
- }
-
+ #endif
+ '''
+
static def getSortedIncludePathList(Classifier classifier) {
var includePathList = CppClassIncludeClassDeclaration.CppClassAllIncludes(classifier).sort;
return includePathList
}
- static def generateBindBodyCode(Classifier classifier) {
- var code = '''
+ static def generateBindBodyCode(Classifier classifier) '''
#define «GenUtils.getFullNameUC(classifier)»_BODY
/************************************************************
@@ -169,12 +105,10 @@ class CppClassifierGenerator extends CppFileGenerator {
/************************************************************
End of «classifier.name» template binding body
- ************************************************************/'''
- return code
- }
-
- static def generateClassHeaderCode(Classifier classifier) {
- var code = '''
+ ************************************************************/
+ '''
+
+ static def generateClassHeaderCode(Classifier classifier) '''
#ifndef «GenUtils.getFullNameUC(classifier)»_H
#define «GenUtils.getFullNameUC(classifier)»_H
@@ -196,25 +130,24 @@ class CppClassifierGenerator extends CppFileGenerator {
«CppDocumentation.CppElementDoc(classifier)»
«CppTemplates.templateSignature(classifier)»«classUnionOrStruct(classifier)» «classifier.name»«CppClassInheritedDeclarations.
CppClassInheritedDeclarations(classifier)» {
- «CppClassFriendDeclaration.CppClassIncludeFriendDeclaration(classifier)»«CppClassTypeAndEnum.
- CppClassTypeAndEnum(classifier)»
+ «CppClassFriendDeclaration.CppClassIncludeFriendDeclaration(classifier)»«CppClassTypeAndEnum.CppClassTypeAndEnum(classifier)»
«var publicVisibility = VisibilityKind.PUBLIC_LITERAL»
- «CppGenUtils.getSection(publicVisibility, defaultInitializer(classifier))»
- «CppGenUtils.getSection(publicVisibility,
+ «CppGenUtils.getSection(publicVisibility, defaultInitializer(classifier))»
+ «CppGenUtils.getSection(publicVisibility,
CppClassAttributesDeclaration.CppClassAttributesDeclaration(classifier, publicVisibility).toString)»
- «CppGenUtils.getSection(publicVisibility,
+ «CppGenUtils.getSection(publicVisibility,
CppClassOperationsDeclaration.CppClassOperationsDeclaration(classifier, publicVisibility).toString)»
«var protectedVisibility = VisibilityKind.PROTECTED_LITERAL»
- «CppGenUtils.getSection(protectedVisibility,
+ «CppGenUtils.getSection(protectedVisibility,
CppClassAttributesDeclaration.CppClassAttributesDeclaration(classifier, protectedVisibility).toString)»
- «CppGenUtils.getSection(protectedVisibility,
+ «CppGenUtils.getSection(protectedVisibility,
CppClassOperationsDeclaration.CppClassOperationsDeclaration(classifier, protectedVisibility).toString)»
«var privateVisibility = VisibilityKind.PRIVATE_LITERAL»
- «CppGenUtils.getSection(privateVisibility,
+ «CppGenUtils.getSection(privateVisibility,
CppClassAttributesDeclaration.CppClassAttributesDeclaration(classifier, privateVisibility).toString)»
- «CppGenUtils.getSection(privateVisibility,
+ «CppGenUtils.getSection(privateVisibility,
CppClassOperationsDeclaration.CppClassOperationsDeclaration(classifier, privateVisibility).toString)»
};
/************************************************************/
@@ -238,10 +171,9 @@ class CppClassifierGenerator extends CppFileGenerator {
End of «classifier.name» class header
************************************************************/
- #endif'''
- return code
- }
-
+ #endif
+ '''
+
static def classUnionOrStruct(Classifier classifier) {
if (GenUtils.hasStereotype(classifier, Union)) {
return 'union'
@@ -279,7 +211,7 @@ class CppClassifierGenerator extends CppFileGenerator {
CppClassOperationsDeclaration.
*/
var code = '''
- «IF CppOperations.getOwnedOperations(classifier).filter[GenUtils.hasStereotype(it, Create)].size() == 0»
+ «IF CppOperations.getOwnedOperations(classifier).filter[GenUtils.hasStereotype(it, Create)].empty»
«var attributeList = classifier.attributes.filter[
(it.isStatic == false) && (it.defaultValue != null) && (it.defaultValue.stringValue != null)]»
«IF !attributeList.empty»
@@ -289,8 +221,7 @@ class CppClassifierGenerator extends CppFileGenerator {
return code.trim
}
- static def generateClassBodyCode(Classifier classifier) {
- var code = '''
+ static def generateClassBodyCode(Classifier classifier) '''
#define «GenUtils.getFullName(classifier)»_BODY
/************************************************************
@@ -323,8 +254,6 @@ class CppClassifierGenerator extends CppFileGenerator {
/************************************************************
End of «classifier.name» class body
- ************************************************************/'''
- return code
- }
-
+ ************************************************************/
+ '''
}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.xtend
deleted file mode 100644
index b20f551a366..00000000000
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.xtend
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
-
-import org.eclipse.core.resources.IResource
-import org.eclipse.core.runtime.CoreException
-import org.eclipse.emf.common.util.EList
-import org.eclipse.papyrus.cpp.codegen.Activator
-import org.eclipse.papyrus.cpp.codegen.utils.ClassUtils
-import org.eclipse.uml2.uml.Classifier
-import org.eclipse.uml2.uml.Package
-import org.eclipse.uml2.uml.PackageableElement
-import org.eclipse.papyrus.cpp.codegen.transformation.CppModelElementsCreator
-
-/**
- * @author Önder GÜRCAN (onder.gurcan@cea.fr)
- */
-public class CppCodeGenerator {
-
- /**
- * Generate code for a passed packageable element and the elements required by it (in the sense of #included statements)
- *
- * @param mec model elements creator
- * @param pe the element that should be generated
- * @param alreadyHandled list of packageable elements for which code has already been generated.
- * @param recurse if the passed packageableElement is a package, generate code for its contents (recursively).
- */
- static def generate(CppModelElementsCreator mec, PackageableElement pe, EList<PackageableElement> alreadyHandled,
- boolean recurse) {
- val srcPkg = mec.getContainer(pe);
- try {
- alreadyHandled.add(pe);
- mec.createPackageableElement(srcPkg, null, pe, false);
- } catch (CoreException coreException) {
- Activator.log.error(coreException);
- } finally {
- // Refresh the container for the newly created files. This needs to be done even
- // during error because of the possibility for partial results.
- try {
- srcPkg.refreshLocal(IResource.DEPTH_INFINITE, null);
- } catch(CoreException e) {
- Activator.log.error(e);
- }
- }
-
- if (pe instanceof Classifier) {
- var EList<Classifier> requiredClassifiers = ClassUtils.includedClassifiers((pe as Classifier));
- for (Classifier requiredClassifier : requiredClassifiers) {
- if (!alreadyHandled.contains(requiredClassifier)) {
- generate(mec, requiredClassifier, alreadyHandled, false);
- }
- }
- }
- // owning package is required by generated code.
- var Package owningPackage = pe.getNearestPackage();
- if ((owningPackage != null) && (owningPackage != pe)) {
- if (!alreadyHandled.contains(owningPackage)) {
- generate(mec, owningPackage, alreadyHandled, false);
- }
- }
- if ((pe instanceof Package) && recurse) {
- // Continue generation parsing package contents
- for(PackageableElement currentElement : (pe as Package).getPackagedElements()) {
- generate(mec, currentElement, alreadyHandled, recurse);
- }
- }
- }
-}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.xtend
index 6795cceec7f..de7dcd05ec5 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.xtend
@@ -1,11 +1,22 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Element
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.uml2.uml.Operation
import org.eclipse.uml2.uml.Parameter
import org.eclipse.uml2.uml.Behavior
import org.eclipse.uml2.uml.ParameterDirectionKind
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.xtend
index 909bae5b37b..1898a8c38c2 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.xtend
@@ -1,9 +1,20 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Enumeration
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.C_Cpp.CppInit
import org.eclipse.uml2.uml.util.UMLUtil
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.xtend
deleted file mode 100644
index ddf38c16473..00000000000
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.xtend
+++ /dev/null
@@ -1,100 +0,0 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
-
-import java.io.ByteArrayInputStream
-import java.io.IOException
-import java.io.OutputStream
-import org.eclipse.core.filesystem.EFS
-import org.eclipse.core.filesystem.IFileStore
-import org.eclipse.core.resources.IContainer
-import org.eclipse.core.resources.IFile
-import org.eclipse.core.resources.IFolder
-import org.eclipse.core.resources.IProject
-import org.eclipse.core.runtime.CoreException
-import org.eclipse.core.runtime.Platform
-import org.eclipse.cdt.core.CCorePlugin
-import org.eclipse.cdt.core.formatter.CodeFormatter
-import org.eclipse.cdt.core.ToolFactory
-import org.eclipse.jface.text.IDocument
-import org.eclipse.jface.text.Document
-import org.eclipse.text.edits.TextEdit
-import org.eclipse.papyrus.cpp.codegen.Activator
-import org.eclipse.papyrus.cpp.codegen.Messages
-import org.eclipse.text.edits.MalformedTreeException
-import org.eclipse.jface.text.BadLocationException
-
-/**
- * @author Önder GÜRCAN (onder.gurcan@cea.fr)
- */
-abstract class CppFileGenerator {
-
- static def generateFile(IContainer owner, String filename, String content, boolean force) {
- var IFile file = null;
- if (owner instanceof IProject) {
- file = (owner as IProject).getFile(filename)
- } else if(owner instanceof IFolder) {
- file = (owner as IFolder).getFile(filename)
- } else {
- // undefined
- }
-
- if(file != null) {
- createFile(file, format(content), force);
- }
- }
-
- static def void createFile(IFile file, String content, boolean force) throws CoreException {
- if (file.exists() && force) {
- // file.delete(true,true,null);
- // YT - deleting files produce inconsistency in SVN working copies
- var locationURI = file.getLocationURI();
- if(locationURI != null) {
- var IFileStore store = EFS.getStore(locationURI);
- var OutputStream os = store.openOutputStream(0, null);
- try {
- os.write(content.getBytes());
- } catch (IOException e) {
- throw new RuntimeException ("C++ code generation: " + e.getMessage()); //$NON-NLS-1$
- }
- }
- // file.setContents(new ByteArrayInputStream(content.getBytes()),
- // true, true, null);
- } else if(file.exists() && !(force)) {
- // the file is not updated
- } else {
- // the file does not exists
- file.create(new ByteArrayInputStream(content.getBytes()), true, null);
- }
- }
-
- /**
- * Apply the user's currently selected formatting options to the input content. Return the
- * input String in case of error.
- */
- static def String format(String content) {
-
- // do nothing if the CDT plugin is not loaded
- if (Platform.getBundle(CCorePlugin.PLUGIN_ID) == null)
- return content;
-
- var CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(null);
- var IDocument doc = new Document(content);
-
- var TextEdit edit = codeFormatter.format(CodeFormatter.K_TRANSLATION_UNIT, doc.get(), 0, doc.get().length(), 0, null);
-
- if (edit == null) {
- Activator.log.debug(Messages.CppModelElementsCreator_CannotFormatContent);
- return content;
- }
-
- try {
- edit.apply(doc);
- return doc.get();
- } catch (MalformedTreeException e) {
- Activator.log.error(e);
- } catch (BadLocationException e) {
- Activator.log.error(e);
- }
-
- return content;
- }
-} \ No newline at end of file
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.xtend
index f7cc8621673..c8623883fe1 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.xtend
@@ -1,9 +1,20 @@
package org.eclipse.papyrus.cpp.codegen.xtend
-import org.eclipse.uml2.uml.NamedElement
-import org.eclipse.papyrus.acceleo.GenUtils
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ import org.eclipse.uml2.uml.NamedElement
import org.eclipse.papyrus.C_Cpp.Include
import org.eclipse.uml2.uml.util.UMLUtil
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend
index 439feac17ab..5d644df9701 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend
@@ -1,8 +1,18 @@
package org.eclipse.papyrus.cpp.codegen.xtend
-import org.eclipse.papyrus.C_Cpp.Inline
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ import org.eclipse.papyrus.C_Cpp.Inline
import org.eclipse.papyrus.C_Cpp.Virtual
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
import org.eclipse.papyrus.cpp.codegen.utils.Modifier
import org.eclipse.uml2.uml.Behavior
@@ -18,6 +28,7 @@ import org.eclipse.uml2.uml.profile.standard.Destroy
import org.eclipse.papyrus.C_Cpp.ConstInit
import org.eclipse.uml2.uml.util.UMLUtil
import org.eclipse.papyrus.cpp.codegen.Constants
+import org.eclipse.papyrus.codegen.base.GenUtils
class CppOperations {
static def CppOperationImplementation(Operation operation) '''
@@ -68,9 +79,20 @@ class CppOperations {
(UMLUtil.getStereotypeApplication(operation, ConstInit) as ConstInit).initialisation
}
}
-
- // return a list of owned operations, since this is not supported directly on a classifier/]
+
+ // return a list of owned operations, return emptyset, if null
static def getOwnedOperations(Classifier cl) {
+ val operations = getOwnedOperationsWNull(cl)
+ if (operations == null) {
+ emptySet
+ }
+ else {
+ operations
+ }
+ }
+
+ // return a list of owned operations, since this is not supported directly on a classifier
+ static def getOwnedOperationsWNull(Classifier cl) {
if (cl instanceof Class) {
(cl as Class).ownedOperations
} else {
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.xtend
index 126706c5a03..4698312f2b8 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.xtend
@@ -1,22 +1,27 @@
package org.eclipse.papyrus.cpp.codegen.xtend
-import org.eclipse.core.resources.IContainer
-import org.eclipse.papyrus.acceleo.GenUtils
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
import org.eclipse.uml2.uml.Package
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
*/
-class CppPackageHeaderGenerator extends CppFileGenerator {
- static def generate(IContainer packageContainer, Package pkg) {
- val fileName = "Pkg_" + pkg.name + "." + CppCodeGenUtils.getHeaderSuffix()
- generateFile(packageContainer, fileName, pkg.generateCode, true)
- }
-
- static def generateCode(Package pkg) {
- val code = '''
+class CppPackageHeaderGenerator {
+
+ static def generateCode(Package pkg) '''
#ifndef PKG_«GenUtils.getFullNameUC(pkg)»
#define PKG_«GenUtils.getFullNameUC(pkg)»
@@ -47,9 +52,6 @@ class CppPackageHeaderGenerator extends CppFileGenerator {
«CppGenUtils.openNS(pkg)»
// Types defined within the package
- «IF pkg.name == "root"»
- «var x = 0»
- «ENDIF»
«CppClassTypeAndEnum.CppClassTypeAndEnumPackage(pkg)»
«CppGenUtils.closeNS(pkg)»
@@ -57,7 +59,6 @@ class CppPackageHeaderGenerator extends CppFileGenerator {
End of Pkg_«pkg.name» package header
************************************************************/
- #endif'''
- return code
- }
+ #endif
+ '''
} \ No newline at end of file
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.xtend
index 7b8f496c978..2682871de4b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.xtend
@@ -1,4 +1,15 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Operation
import org.eclipse.uml2.uml.Parameter
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.xtend
index 3757e8dd098..46fcb612a72 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.xtend
@@ -1,10 +1,21 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.PrimitiveType
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.C_Cpp.Typedef
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
import org.eclipse.uml2.uml.util.UMLUtil
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.xtend
index 7ae148b2044..13c207c8708 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.xtend
@@ -1,12 +1,23 @@
-package org.eclipse.papyrus.cpp.codegen.xtend
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.papyrus.cpp.codegen.xtend
import org.eclipse.uml2.uml.Operation
import org.eclipse.uml2.uml.Classifier
-import org.eclipse.papyrus.acceleo.GenUtils
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
import org.eclipse.uml2.uml.TemplateParameterSubstitution
import org.eclipse.uml2.uml.NamedElement
import org.eclipse.uml2.uml.LiteralInteger
+import org.eclipse.papyrus.codegen.base.GenUtils
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/.gitignore b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/.gitignore
new file mode 100644
index 00000000000..5205a6ea352
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/.gitignore
@@ -0,0 +1 @@
+/CppCodeGenerator.java
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.java
index 423847c7e74..c27a5e407c9 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.java
@@ -1,9 +1,20 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
+import java.util.Collection;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.Const;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.Modifier;
import org.eclipse.papyrus.cpp.codegen.xtend.CppDocumentation;
@@ -15,6 +26,7 @@ import org.eclipse.uml2.uml.Signal;
import org.eclipse.uml2.uml.Type;
import org.eclipse.uml2.uml.ValueSpecification;
import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
@@ -26,7 +38,7 @@ public class CppAttribute {
_builder.append("// static attributes (if any)");
_builder.newLine();
{
- EList<Property> _ownedAttributes = CppAttribute.getOwnedAttributes(classifier);
+ Collection<Property> _ownedAttributes = CppAttribute.getOwnedAttributes(classifier);
for(final Property ownedAttribute : _ownedAttributes) {
{
boolean _and = false;
@@ -50,7 +62,23 @@ public class CppAttribute {
return code;
}
- public static EList<Property> getOwnedAttributes(final Classifier cl) {
+ public static Collection<Property> getOwnedAttributes(final Classifier cl) {
+ Collection<Property> _xblockexpression = null;
+ {
+ final EList<Property> attributes = CppAttribute.getOwnedAttributesWNull(cl);
+ Collection<Property> _xifexpression = null;
+ boolean _equals = Objects.equal(attributes, null);
+ if (_equals) {
+ _xifexpression = CollectionLiterals.<Property>emptySet();
+ } else {
+ _xifexpression = attributes;
+ }
+ _xblockexpression = _xifexpression;
+ }
+ return _xblockexpression;
+ }
+
+ public static EList<Property> getOwnedAttributesWNull(final Classifier cl) {
EList<Property> _xifexpression = null;
if ((cl instanceof org.eclipse.uml2.uml.Class)) {
_xifexpression = ((org.eclipse.uml2.uml.Class) cl).getOwnedAttributes();
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.java
index b16d70168f4..9108e7e0517 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassAttributesDeclaration.java
@@ -1,7 +1,17 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
-import org.eclipse.emf.common.util.EList;
+import java.util.Collection;
import org.eclipse.papyrus.cpp.codegen.xtend.CppAttribute;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Property;
@@ -18,7 +28,7 @@ public class CppClassAttributesDeclaration {
public static CharSequence CppClassAttributesDeclaration(final Classifier clazz, final VisibilityKind visibilityFilter) {
StringConcatenation _builder = new StringConcatenation();
{
- EList<Property> _ownedAttributes = CppAttribute.getOwnedAttributes(clazz);
+ Collection<Property> _ownedAttributes = CppAttribute.getOwnedAttributes(clazz);
final Function1<Property, Boolean> _function = new Function1<Property, Boolean>() {
public Boolean apply(final Property it) {
VisibilityKind _visibility = it.getVisibility();
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.java
index 23b17ac42c1..f5b18f1a887 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.java
@@ -1,9 +1,19 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.Friend;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.java
index d380b88b864..6823f4238c3 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeClassDeclaration.java
@@ -7,7 +7,7 @@ import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.CppRoot;
import org.eclipse.papyrus.C_Cpp.External;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.ClassUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassIncludeDeclaration;
import org.eclipse.uml2.uml.Classifier;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.java
index 7e5f9b0bcee..cefecfbea8b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassIncludeDeclaration.java
@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import java.util.ArrayList;
@@ -6,7 +16,7 @@ import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.ExternLibrary;
import org.eclipse.papyrus.C_Cpp.External;
import org.eclipse.papyrus.C_Cpp.Template;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.util.UMLUtil;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.java
index c3e86778edd..c9ec4123d68 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassInheritedDeclarations.java
@@ -1,9 +1,19 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
import org.eclipse.papyrus.C_Cpp.Visibility;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.DirectedRelationship;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.java
index 6ab9b1cb8dd..9148b7ed64b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsDeclaration.java
@@ -1,9 +1,19 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
import com.google.common.collect.Iterables;
+import java.util.Collection;
import java.util.List;
-import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.papyrus.cpp.codegen.xtend.CppOperations;
@@ -25,7 +35,7 @@ public class CppClassOperationsDeclaration {
public static CharSequence CppClassOperationsDeclaration(final Classifier clazz, final VisibilityKind visibilityFilter) {
StringConcatenation _builder = new StringConcatenation();
{
- EList<Operation> _ownedOperations = CppOperations.getOwnedOperations(clazz);
+ Collection<Operation> _ownedOperations = CppOperations.getOwnedOperations(clazz);
final Function1<Operation, Boolean> _function = new Function1<Operation, Boolean>() {
public Boolean apply(final Operation it) {
VisibilityKind _visibility = it.getVisibility();
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.java
index 35f5ecafd13..36e5021d57c 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassOperationsImplementation.java
@@ -1,12 +1,22 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
-import org.eclipse.emf.common.util.EList;
+import java.util.Collection;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.papyrus.C_Cpp.Inline;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppOperations;
import org.eclipse.uml2.uml.BehavioralFeature;
import org.eclipse.uml2.uml.Classifier;
@@ -25,7 +35,7 @@ public class CppClassOperationsImplementation {
public static CharSequence CppClassOperationsImplementation(final Classifier clazz, final boolean inline) {
StringConcatenation _builder = new StringConcatenation();
{
- EList<Operation> _ownedOperations = CppOperations.getOwnedOperations(clazz);
+ Collection<Operation> _ownedOperations = CppOperations.getOwnedOperations(clazz);
final Function1<Operation, Boolean> _function = new Function1<Operation, Boolean>() {
public Boolean apply(final Operation it) {
boolean _and = false;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.java
index e3bd37d908a..9968bbc3779 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassTypeAndEnum.java
@@ -1,8 +1,18 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppEnumerations;
import org.eclipse.papyrus.cpp.codegen.xtend.CppPrimitiveTypes;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.java
index 69a93103839..4702d45f6f4 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppClassifierGenerator.java
@@ -1,20 +1,22 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
+import java.util.Collection;
import java.util.List;
-import org.eclipse.core.resources.IContainer;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.papyrus.C_Cpp.ExternLibrary;
-import org.eclipse.papyrus.C_Cpp.External;
-import org.eclipse.papyrus.C_Cpp.Include;
-import org.eclipse.papyrus.C_Cpp.ManualGeneration;
-import org.eclipse.papyrus.C_Cpp.NoCodeGen;
-import org.eclipse.papyrus.C_Cpp.Template;
import org.eclipse.papyrus.C_Cpp.Union;
-import org.eclipse.papyrus.acceleo.AcceleoDriver;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils;
-import org.eclipse.papyrus.cpp.codegen.transformation.CppModelElementsCreator;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppAttribute;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassAttributesDeclaration;
@@ -25,11 +27,9 @@ import org.eclipse.papyrus.cpp.codegen.xtend.CppClassOperationsDeclaration;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassOperationsImplementation;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassTypeAndEnum;
import org.eclipse.papyrus.cpp.codegen.xtend.CppDocumentation;
-import org.eclipse.papyrus.cpp.codegen.xtend.CppFileGenerator;
import org.eclipse.papyrus.cpp.codegen.xtend.CppIncludeUtil;
import org.eclipse.papyrus.cpp.codegen.xtend.CppOperations;
import org.eclipse.papyrus.cpp.codegen.xtend.CppTemplates;
-import org.eclipse.uml2.uml.Association;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.DataType;
import org.eclipse.uml2.uml.Element;
@@ -41,140 +41,25 @@ import org.eclipse.uml2.uml.TemplateParameterSubstitution;
import org.eclipse.uml2.uml.ValueSpecification;
import org.eclipse.uml2.uml.VisibilityKind;
import org.eclipse.uml2.uml.profile.standard.Create;
-import org.eclipse.uml2.uml.util.UMLUtil;
import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
/**
- * @author Önder GÜRCAN (onder.gurcan@cea.fr)
+ * @author Ansgar Radermacher (ansgar.radermacher@cea.fr)
*/
@SuppressWarnings("all")
-public class CppClassifierGenerator extends CppFileGenerator {
- public static void generate(final IContainer container, final Classifier classifier, final String commentHeader) {
- try {
- boolean _hasStereotype = GenUtils.hasStereotype(classifier, ManualGeneration.class);
- if (_hasStereotype) {
- ManualGeneration mg = UMLUtil.<ManualGeneration>getStereotypeApplication(classifier, ManualGeneration.class);
- Include cppInclude = UMLUtil.<Include>getStereotypeApplication(classifier, Include.class);
- String _header = cppInclude.getHeader();
- String _evaluate = AcceleoDriver.evaluate(_header, classifier, null);
- String fileContentH = (commentHeader + _evaluate);
- String _name = classifier.getName();
- String _plus = (_name + CppModelElementsCreator.DOT);
- String _headerSuffix = CppCodeGenUtils.getHeaderSuffix();
- final String fileNameH = (_plus + _headerSuffix);
- CppFileGenerator.generateFile(container, fileNameH, fileContentH, true);
- String _preBody = cppInclude.getPreBody();
- String _evaluate_1 = AcceleoDriver.evaluate(_preBody, classifier, null);
- String _plus_1 = (commentHeader + _evaluate_1);
- String _plus_2 = (_plus_1 + GenUtils.NL);
- String _body = cppInclude.getBody();
- String _evaluate_2 = AcceleoDriver.evaluate(_body, classifier, null);
- String _plus_3 = (_plus_2 + _evaluate_2);
- final String fileContentB = (_plus_3 + GenUtils.NL);
- String _extensionBody = mg.getExtensionBody();
- String ext = GenUtils.maskNull(_extensionBody);
- int _length = ext.length();
- boolean _equals = (_length == 0);
- if (_equals) {
- String _bodySuffix = CppCodeGenUtils.getBodySuffix();
- ext = _bodySuffix;
- }
- String _name_1 = classifier.getName();
- String _plus_4 = (_name_1 + CppModelElementsCreator.DOT);
- final String fileNameB = (_plus_4 + ext);
- CppFileGenerator.generateFile(container, fileNameB, fileContentB, true);
- } else {
- boolean _and = false;
- boolean _and_1 = false;
- boolean _noCodeGen = CppClassifierGenerator.noCodeGen(classifier);
- boolean _not = (!_noCodeGen);
- if (!_not) {
- _and_1 = false;
- } else {
- boolean _hasStereotype_1 = GenUtils.hasStereotype(classifier, Template.class);
- boolean _not_1 = (!_hasStereotype_1);
- _and_1 = _not_1;
- }
- if (!_and_1) {
- _and = false;
- } else {
- _and = (!(classifier instanceof Association));
- }
- if (_and) {
- boolean _isTemplateBoundElement = GenUtils.isTemplateBoundElement(classifier);
- if (_isTemplateBoundElement) {
- String _name_2 = classifier.getName();
- String _plus_5 = (_name_2 + ".");
- String _headerSuffix_1 = CppCodeGenUtils.getHeaderSuffix();
- final String bindHeaderFileName = (_plus_5 + _headerSuffix_1);
- String _generateBindHeaderCode = CppClassifierGenerator.generateBindHeaderCode(classifier);
- String _plus_6 = (commentHeader + _generateBindHeaderCode);
- CppFileGenerator.generateFile(container, bindHeaderFileName, _plus_6, true);
- String _name_3 = classifier.getName();
- String _plus_7 = (_name_3 + ".");
- String _bodySuffix_1 = CppCodeGenUtils.getBodySuffix();
- String bindBodyFileName = (_plus_7 + _bodySuffix_1);
- String _generateBindBodyCode = CppClassifierGenerator.generateBindBodyCode(classifier);
- String _plus_8 = (commentHeader + _generateBindBodyCode);
- CppFileGenerator.generateFile(container, bindBodyFileName, _plus_8, true);
- } else {
- String _name_4 = classifier.getName();
- String _plus_9 = (_name_4 + ".");
- String _headerSuffix_2 = CppCodeGenUtils.getHeaderSuffix();
- final String classHeaderFileName = (_plus_9 + _headerSuffix_2);
- String _generateClassHeaderCode = CppClassifierGenerator.generateClassHeaderCode(classifier);
- String _plus_10 = (commentHeader + _generateClassHeaderCode);
- CppFileGenerator.generateFile(container, classHeaderFileName, _plus_10, true);
- if ((classifier instanceof org.eclipse.uml2.uml.Class)) {
- String _name_5 = ((org.eclipse.uml2.uml.Class)classifier).getName();
- String _plus_11 = (_name_5 + ".");
- String _bodySuffix_2 = CppCodeGenUtils.getBodySuffix();
- String classBodyFileName = (_plus_11 + _bodySuffix_2);
- String _generateClassBodyCode = CppClassifierGenerator.generateClassBodyCode(classifier);
- String _plus_12 = (commentHeader + _generateClassBodyCode);
- CppFileGenerator.generateFile(container, classBodyFileName, _plus_12, true);
- }
- }
- }
- }
- } catch (Throwable _e) {
- throw Exceptions.sneakyThrow(_e);
- }
- }
-
- public static boolean noCodeGen(final Element element) {
- boolean _or = false;
- boolean _or_1 = false;
- boolean _hasStereotype = GenUtils.hasStereotype(element, NoCodeGen.class);
- if (_hasStereotype) {
- _or_1 = true;
- } else {
- boolean _hasStereotype_1 = GenUtils.hasStereotype(element, External.class);
- _or_1 = _hasStereotype_1;
- }
- if (_or_1) {
- _or = true;
- } else {
- boolean _hasStereotypeTree = GenUtils.hasStereotypeTree(element, ExternLibrary.class);
- _or = _hasStereotypeTree;
- }
- return _or;
- }
-
- public static String generateHeaderCode(final Classifier classifier, final String commentHeader) {
+public class CppClassifierGenerator {
+ public static CharSequence generateHeaderCode(final Classifier classifier, final String commentHeader) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(commentHeader, "");
_builder.newLineIfNotEmpty();
_builder.append("AcceleoDriver.evaluate(cppInclude.getHeader(), classifier, null);");
_builder.newLine();
- String code = _builder.toString();
- return code;
+ return _builder;
}
- public static String generateBindHeaderCode(final Classifier classifier) {
+ public static CharSequence generateBindHeaderCode(final Classifier classifier) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("#ifndef ");
String _fullNameUC = GenUtils.getFullNameUC(classifier);
@@ -273,8 +158,8 @@ public class CppClassifierGenerator extends CppFileGenerator {
_builder.newLine();
_builder.newLine();
_builder.append("#endif");
- String code = _builder.toString();
- return code;
+ _builder.newLine();
+ return _builder;
}
public static List<String> getSortedIncludePathList(final Classifier classifier) {
@@ -283,7 +168,7 @@ public class CppClassifierGenerator extends CppFileGenerator {
return includePathList;
}
- public static String generateBindBodyCode(final Classifier classifier) {
+ public static CharSequence generateBindBodyCode(final Classifier classifier) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("#define ");
String _fullNameUC = GenUtils.getFullNameUC(classifier);
@@ -376,11 +261,11 @@ public class CppClassifierGenerator extends CppFileGenerator {
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("************************************************************/");
- String code = _builder.toString();
- return code;
+ _builder.newLine();
+ return _builder;
}
- public static String generateClassHeaderCode(final Classifier classifier) {
+ public static CharSequence generateClassHeaderCode(final Classifier classifier) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("#ifndef ");
String _fullNameUC = GenUtils.getFullNameUC(classifier);
@@ -450,54 +335,54 @@ public class CppClassifierGenerator extends CppFileGenerator {
_builder.append("\t");
VisibilityKind publicVisibility = VisibilityKind.PUBLIC_LITERAL;
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
String _defaultInitializer = CppClassifierGenerator.defaultInitializer(classifier);
String _section = CppGenUtils.getSection(publicVisibility, _defaultInitializer);
- _builder.append(_section, "\t ");
+ _builder.append(_section, "\t");
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
CharSequence _CppClassAttributesDeclaration = CppClassAttributesDeclaration.CppClassAttributesDeclaration(classifier, publicVisibility);
String _string = _CppClassAttributesDeclaration.toString();
String _section_1 = CppGenUtils.getSection(publicVisibility, _string);
- _builder.append(_section_1, "\t ");
+ _builder.append(_section_1, "\t");
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
CharSequence _CppClassOperationsDeclaration = CppClassOperationsDeclaration.CppClassOperationsDeclaration(classifier, publicVisibility);
String _string_1 = _CppClassOperationsDeclaration.toString();
String _section_2 = CppGenUtils.getSection(publicVisibility, _string_1);
- _builder.append(_section_2, "\t ");
+ _builder.append(_section_2, "\t");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("\t");
VisibilityKind protectedVisibility = VisibilityKind.PROTECTED_LITERAL;
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
CharSequence _CppClassAttributesDeclaration_1 = CppClassAttributesDeclaration.CppClassAttributesDeclaration(classifier, protectedVisibility);
String _string_2 = _CppClassAttributesDeclaration_1.toString();
String _section_3 = CppGenUtils.getSection(protectedVisibility, _string_2);
- _builder.append(_section_3, "\t ");
+ _builder.append(_section_3, "\t");
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
CharSequence _CppClassOperationsDeclaration_1 = CppClassOperationsDeclaration.CppClassOperationsDeclaration(classifier, protectedVisibility);
String _string_3 = _CppClassOperationsDeclaration_1.toString();
String _section_4 = CppGenUtils.getSection(protectedVisibility, _string_3);
- _builder.append(_section_4, "\t ");
+ _builder.append(_section_4, "\t");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("\t");
VisibilityKind privateVisibility = VisibilityKind.PRIVATE_LITERAL;
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
CharSequence _CppClassAttributesDeclaration_2 = CppClassAttributesDeclaration.CppClassAttributesDeclaration(classifier, privateVisibility);
String _string_4 = _CppClassAttributesDeclaration_2.toString();
String _section_5 = CppGenUtils.getSection(privateVisibility, _string_4);
- _builder.append(_section_5, "\t ");
+ _builder.append(_section_5, "\t");
_builder.newLineIfNotEmpty();
- _builder.append("\t ");
+ _builder.append("\t");
CharSequence _CppClassOperationsDeclaration_2 = CppClassOperationsDeclaration.CppClassOperationsDeclaration(classifier, privateVisibility);
String _string_5 = _CppClassOperationsDeclaration_2.toString();
String _section_6 = CppGenUtils.getSection(privateVisibility, _string_5);
- _builder.append(_section_6, "\t ");
+ _builder.append(_section_6, "\t");
_builder.newLineIfNotEmpty();
_builder.append("};");
_builder.newLine();
@@ -551,8 +436,8 @@ public class CppClassifierGenerator extends CppFileGenerator {
_builder.newLine();
_builder.newLine();
_builder.append("#endif");
- String code = _builder.toString();
- return code;
+ _builder.newLine();
+ return _builder;
}
public static String classUnionOrStruct(final Classifier classifier) {
@@ -576,16 +461,15 @@ public class CppClassifierGenerator extends CppFileGenerator {
public static String defaultInitializer(final Classifier classifier) {
StringConcatenation _builder = new StringConcatenation();
{
- EList<Operation> _ownedOperations = CppOperations.getOwnedOperations(classifier);
+ Collection<Operation> _ownedOperations = CppOperations.getOwnedOperations(classifier);
final Function1<Operation, Boolean> _function = new Function1<Operation, Boolean>() {
public Boolean apply(final Operation it) {
return Boolean.valueOf(GenUtils.hasStereotype(it, Create.class));
}
};
Iterable<Operation> _filter = IterableExtensions.<Operation>filter(_ownedOperations, _function);
- int _size = IterableExtensions.size(_filter);
- boolean _equals = (_size == 0);
- if (_equals) {
+ boolean _isEmpty = IterableExtensions.isEmpty(_filter);
+ if (_isEmpty) {
EList<Property> _attributes = classifier.getAttributes();
final Function1<Property, Boolean> _function_1 = new Function1<Property, Boolean>() {
public Boolean apply(final Property it) {
@@ -614,8 +498,8 @@ public class CppClassifierGenerator extends CppFileGenerator {
Iterable<Property> attributeList = IterableExtensions.<Property>filter(_attributes, _function_1);
_builder.newLineIfNotEmpty();
{
- boolean _isEmpty = IterableExtensions.isEmpty(attributeList);
- boolean _not = (!_isEmpty);
+ boolean _isEmpty_1 = IterableExtensions.isEmpty(attributeList);
+ boolean _not = (!_isEmpty_1);
if (_not) {
String _name = classifier.getName();
_builder.append(_name, "");
@@ -648,7 +532,7 @@ public class CppClassifierGenerator extends CppFileGenerator {
return code.trim();
}
- public static String generateClassBodyCode(final Classifier classifier) {
+ public static CharSequence generateClassBodyCode(final Classifier classifier) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("#define ");
String _fullName = GenUtils.getFullName(classifier);
@@ -733,7 +617,7 @@ public class CppClassifierGenerator extends CppFileGenerator {
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("************************************************************/");
- String code = _builder.toString();
- return code;
+ _builder.newLine();
+ return _builder;
}
}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.java
deleted file mode 100644
index 567248aee31..00000000000
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppCodeGenerator.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.eclipse.papyrus.cpp.codegen.xtend;
-
-import com.google.common.base.Objects;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.papyrus.cpp.codegen.Activator;
-import org.eclipse.papyrus.cpp.codegen.transformation.CppModelElementsCreator;
-import org.eclipse.papyrus.cpp.codegen.utils.ClassUtils;
-import org.eclipse.uml2.uml.Classifier;
-import org.eclipse.uml2.uml.PackageableElement;
-import org.eclipse.xtext.xbase.lib.Exceptions;
-
-/**
- * @author Önder GÜRCAN (onder.gurcan@cea.fr)
- */
-@SuppressWarnings("all")
-public class CppCodeGenerator {
- /**
- * Generate code for a passed packageable element and the elements required by it (in the sense of #included statements)
- *
- * @param mec model elements creator
- * @param pe the element that should be generated
- * @param alreadyHandled list of packageable elements for which code has already been generated.
- * @param recurse if the passed packageableElement is a package, generate code for its contents (recursively).
- */
- public static Object generate(final CppModelElementsCreator mec, final PackageableElement pe, final EList<PackageableElement> alreadyHandled, final boolean recurse) {
- final IContainer srcPkg = mec.getContainer(pe);
- try {
- alreadyHandled.add(pe);
- mec.createPackageableElement(srcPkg, null, pe, false);
- } catch (final Throwable _t) {
- if (_t instanceof CoreException) {
- final CoreException coreException = (CoreException)_t;
- Activator.log.error(coreException);
- } else {
- throw Exceptions.sneakyThrow(_t);
- }
- } finally {
- try {
- srcPkg.refreshLocal(IResource.DEPTH_INFINITE, null);
- } catch (final Throwable _t_1) {
- if (_t_1 instanceof CoreException) {
- final CoreException e = (CoreException)_t_1;
- Activator.log.error(e);
- } else {
- throw Exceptions.sneakyThrow(_t_1);
- }
- }
- }
- if ((pe instanceof Classifier)) {
- EList<Classifier> requiredClassifiers = ClassUtils.includedClassifiers(((Classifier) pe));
- for (final Classifier requiredClassifier : requiredClassifiers) {
- boolean _contains = alreadyHandled.contains(requiredClassifier);
- boolean _not = (!_contains);
- if (_not) {
- CppCodeGenerator.generate(mec, requiredClassifier, alreadyHandled, false);
- }
- }
- }
- org.eclipse.uml2.uml.Package owningPackage = pe.getNearestPackage();
- boolean _and = false;
- boolean _notEquals = (!Objects.equal(owningPackage, null));
- if (!_notEquals) {
- _and = false;
- } else {
- boolean _notEquals_1 = (!Objects.equal(owningPackage, pe));
- _and = _notEquals_1;
- }
- if (_and) {
- boolean _contains_1 = alreadyHandled.contains(owningPackage);
- boolean _not_1 = (!_contains_1);
- if (_not_1) {
- CppCodeGenerator.generate(mec, owningPackage, alreadyHandled, false);
- }
- }
- boolean _and_1 = false;
- if (!(pe instanceof org.eclipse.uml2.uml.Package)) {
- _and_1 = false;
- } else {
- _and_1 = recurse;
- }
- if (_and_1) {
- EList<PackageableElement> _packagedElements = ((org.eclipse.uml2.uml.Package) pe).getPackagedElements();
- for (final PackageableElement currentElement : _packagedElements) {
- CppCodeGenerator.generate(mec, currentElement, alreadyHandled, recurse);
- }
- }
- return null;
- }
-}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.java
index 4d0b48b5612..22862ff2338 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppDocumentation.java
@@ -1,8 +1,18 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.uml2.uml.Behavior;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Operation;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.java
index 0a14a571d9e..145f46a900e 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.java
@@ -1,8 +1,18 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.CppInit;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppDocumentation;
import org.eclipse.uml2.uml.Enumeration;
import org.eclipse.uml2.uml.EnumerationLiteral;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.java
deleted file mode 100644
index cea58ba8ebf..00000000000
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppFileGenerator.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.eclipse.papyrus.cpp.codegen.xtend;
-
-import com.google.common.base.Objects;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URI;
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.ToolFactory;
-import org.eclipse.cdt.core.formatter.CodeFormatter;
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.papyrus.cpp.codegen.Activator;
-import org.eclipse.papyrus.cpp.codegen.Messages;
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.text.edits.TextEdit;
-import org.eclipse.xtext.xbase.lib.Exceptions;
-import org.osgi.framework.Bundle;
-
-/**
- * @author Önder GÜRCAN (onder.gurcan@cea.fr)
- */
-@SuppressWarnings("all")
-public abstract class CppFileGenerator {
- public static void generateFile(final IContainer owner, final String filename, final String content, final boolean force) {
- try {
- IFile file = null;
- if ((owner instanceof IProject)) {
- IFile _file = ((IProject) owner).getFile(filename);
- file = _file;
- } else {
- if ((owner instanceof IFolder)) {
- IFile _file_1 = ((IFolder) owner).getFile(filename);
- file = _file_1;
- } else {
- }
- }
- boolean _notEquals = (!Objects.equal(file, null));
- if (_notEquals) {
- String _format = CppFileGenerator.format(content);
- CppFileGenerator.createFile(file, _format, force);
- }
- } catch (Throwable _e) {
- throw Exceptions.sneakyThrow(_e);
- }
- }
-
- public static void createFile(final IFile file, final String content, final boolean force) throws CoreException {
- boolean _and = false;
- boolean _exists = file.exists();
- if (!_exists) {
- _and = false;
- } else {
- _and = force;
- }
- if (_and) {
- URI locationURI = file.getLocationURI();
- boolean _notEquals = (!Objects.equal(locationURI, null));
- if (_notEquals) {
- IFileStore store = EFS.getStore(locationURI);
- OutputStream os = store.openOutputStream(0, null);
- try {
- byte[] _bytes = content.getBytes();
- os.write(_bytes);
- } catch (final Throwable _t) {
- if (_t instanceof IOException) {
- final IOException e = (IOException)_t;
- String _message = e.getMessage();
- String _plus = ("C++ code generation: " + _message);
- throw new RuntimeException(_plus);
- } else {
- throw Exceptions.sneakyThrow(_t);
- }
- }
- }
- } else {
- boolean _and_1 = false;
- boolean _exists_1 = file.exists();
- if (!_exists_1) {
- _and_1 = false;
- } else {
- _and_1 = (!force);
- }
- if (_and_1) {
- } else {
- byte[] _bytes_1 = content.getBytes();
- ByteArrayInputStream _byteArrayInputStream = new ByteArrayInputStream(_bytes_1);
- file.create(_byteArrayInputStream, true, null);
- }
- }
- }
-
- /**
- * Apply the user's currently selected formatting options to the input content. Return the
- * input String in case of error.
- */
- public static String format(final String content) {
- Bundle _bundle = Platform.getBundle(CCorePlugin.PLUGIN_ID);
- boolean _equals = Objects.equal(_bundle, null);
- if (_equals) {
- return content;
- }
- CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(null);
- IDocument doc = new Document(content);
- String _get = doc.get();
- String _get_1 = doc.get();
- int _length = _get_1.length();
- TextEdit edit = codeFormatter.format(CodeFormatter.K_TRANSLATION_UNIT, _get, 0, _length, 0, null);
- boolean _equals_1 = Objects.equal(edit, null);
- if (_equals_1) {
- Activator.log.debug(Messages.CppModelElementsCreator_CannotFormatContent);
- return content;
- }
- try {
- edit.apply(doc);
- return doc.get();
- } catch (final Throwable _t) {
- if (_t instanceof MalformedTreeException) {
- final MalformedTreeException e = (MalformedTreeException)_t;
- Activator.log.error(e);
- } else if (_t instanceof BadLocationException) {
- final BadLocationException e_1 = (BadLocationException)_t;
- Activator.log.error(e_1);
- } else {
- throw Exceptions.sneakyThrow(_t);
- }
- }
- return content;
- }
-}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.java
index 5ba183df155..1c47338c86e 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppIncludeUtil.java
@@ -2,7 +2,7 @@ package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
import org.eclipse.papyrus.C_Cpp.Include;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.util.UMLUtil;
import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.java
index e9b9fa91722..79d1a53e9ad 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.java
@@ -1,11 +1,12 @@
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
+import java.util.Collection;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.ConstInit;
import org.eclipse.papyrus.C_Cpp.Inline;
import org.eclipse.papyrus.C_Cpp.Virtual;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.Constants;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.Modifier;
@@ -26,6 +27,7 @@ import org.eclipse.uml2.uml.profile.standard.Create;
import org.eclipse.uml2.uml.profile.standard.Destroy;
import org.eclipse.uml2.uml.util.UMLUtil;
import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Conversions;
@SuppressWarnings("all")
@@ -222,7 +224,23 @@ public class CppOperations {
return _xifexpression;
}
- public static EList<Operation> getOwnedOperations(final Classifier cl) {
+ public static Collection<Operation> getOwnedOperations(final Classifier cl) {
+ Collection<Operation> _xblockexpression = null;
+ {
+ final EList<Operation> operations = CppOperations.getOwnedOperationsWNull(cl);
+ Collection<Operation> _xifexpression = null;
+ boolean _equals = Objects.equal(operations, null);
+ if (_equals) {
+ _xifexpression = CollectionLiterals.<Operation>emptySet();
+ } else {
+ _xifexpression = operations;
+ }
+ _xblockexpression = _xifexpression;
+ }
+ return _xblockexpression;
+ }
+
+ public static EList<Operation> getOwnedOperationsWNull(final Classifier cl) {
EList<Operation> _xifexpression = null;
if ((cl instanceof org.eclipse.uml2.uml.Class)) {
_xifexpression = ((org.eclipse.uml2.uml.Class) cl).getOwnedOperations();
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.java
index 498dae9714d..0503d1a7f25 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPackageHeaderGenerator.java
@@ -1,14 +1,11 @@
package org.eclipse.papyrus.cpp.codegen.xtend;
-import com.google.common.base.Objects;
-import org.eclipse.core.resources.IContainer;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassIncludeClassDeclaration;
import org.eclipse.papyrus.cpp.codegen.xtend.CppClassTypeAndEnum;
-import org.eclipse.papyrus.cpp.codegen.xtend.CppFileGenerator;
import org.eclipse.papyrus.cpp.codegen.xtend.CppIncludeUtil;
import org.eclipse.xtend2.lib.StringConcatenation;
@@ -16,18 +13,8 @@ import org.eclipse.xtend2.lib.StringConcatenation;
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
*/
@SuppressWarnings("all")
-public class CppPackageHeaderGenerator extends CppFileGenerator {
- public static void generate(final IContainer packageContainer, final org.eclipse.uml2.uml.Package pkg) {
- String _name = pkg.getName();
- String _plus = ("Pkg_" + _name);
- String _plus_1 = (_plus + ".");
- String _headerSuffix = CppCodeGenUtils.getHeaderSuffix();
- final String fileName = (_plus_1 + _headerSuffix);
- String _generateCode = CppPackageHeaderGenerator.generateCode(pkg);
- CppFileGenerator.generateFile(packageContainer, fileName, _generateCode, true);
- }
-
- public static String generateCode(final org.eclipse.uml2.uml.Package pkg) {
+public class CppPackageHeaderGenerator {
+ public static CharSequence generateCode(final org.eclipse.uml2.uml.Package pkg) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("#ifndef PKG_");
String _fullNameUC = GenUtils.getFullNameUC(pkg);
@@ -105,14 +92,6 @@ public class CppPackageHeaderGenerator extends CppFileGenerator {
_builder.newLine();
_builder.append("// Types defined within the package");
_builder.newLine();
- {
- String _name_2 = pkg.getName();
- boolean _equals = Objects.equal(_name_2, "root");
- if (_equals) {
- int x = 0;
- _builder.newLineIfNotEmpty();
- }
- }
CharSequence _CppClassTypeAndEnumPackage = CppClassTypeAndEnum.CppClassTypeAndEnumPackage(pkg);
_builder.append(_CppClassTypeAndEnumPackage, "");
_builder.newLineIfNotEmpty();
@@ -124,8 +103,8 @@ public class CppPackageHeaderGenerator extends CppFileGenerator {
_builder.newLine();
_builder.append(" ");
_builder.append("End of Pkg_");
- String _name_3 = pkg.getName();
- _builder.append(_name_3, " ");
+ String _name_2 = pkg.getName();
+ _builder.append(_name_2, " ");
_builder.append(" package header");
_builder.newLineIfNotEmpty();
_builder.append(" ");
@@ -133,7 +112,7 @@ public class CppPackageHeaderGenerator extends CppFileGenerator {
_builder.newLine();
_builder.newLine();
_builder.append("#endif");
- final String code = _builder.toString();
- return code;
+ _builder.newLine();
+ return _builder;
}
}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.java
index edd0c54408c..d9c14dc75af 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppParameter.java
@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import com.google.common.base.Objects;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.java
index 96e8f539060..10387bedfdd 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppPrimitiveTypes.java
@@ -1,7 +1,17 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import org.eclipse.papyrus.C_Cpp.Typedef;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.papyrus.cpp.codegen.xtend.CppDocumentation;
import org.eclipse.uml2.uml.PrimitiveType;
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.java
index 09e095d3782..d55c752e96a 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/xtend-gen/org/eclipse/papyrus/cpp/codegen/xtend/CppTemplates.java
@@ -1,7 +1,17 @@
+/**
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ */
package org.eclipse.papyrus.cpp.codegen.xtend;
import java.util.Collection;
-import org.eclipse.papyrus.acceleo.GenUtils;
+import org.eclipse.papyrus.codegen.base.GenUtils;
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Element;

Back to the top