Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2015-03-24 17:06:27 +0000
committerAnsgar Radermacher2015-03-24 17:10:51 +0000
commit62a120a1a34a7ca50cdeb7bc248b1c6716cb7a9d (patch)
treebe854856f8262dbb94dc54018be67fc49e7687d9
parent365ceffe72abe0769c5104a4c6f341b7994147aa (diff)
downloadorg.eclipse.papyrus-62a120a1a34a7ca50cdeb7bc248b1c6716cb7a9d.tar.gz
org.eclipse.papyrus-62a120a1a34a7ca50cdeb7bc248b1c6716cb7a9d.tar.xz
org.eclipse.papyrus-62a120a1a34a7ca50cdeb7bc248b1c6716cb7a9d.zip
463003 - [C++ codegen] regressions related to templates and initializers
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/CppModelElementsCreator.java5
-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/xtend/CppClassifierGenerator.xtend14
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppEnumerations.xtend8
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend2
5 files changed, 17 insertions, 16 deletions
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 cd8d62498a8..ff974a517e5 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
@@ -178,11 +178,10 @@ public class CppModelElementsCreator extends ModelElementsCreator {
final String bindHeaderFileName = locStrategy.getFileName(classifier) + Constants.DOT + hppExt;
generateFile(bindHeaderFileName, commentHeader + CppClassifierGenerator.generateBindHeaderCode(classifier));
- final String bindBodyFileName = classifier.getName() + Constants.DOT + cppExt;
+ final String bindBodyFileName = locStrategy.getFileName(classifier) + 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));
@@ -241,6 +240,4 @@ public class CppModelElementsCreator extends ModelElementsCreator {
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/CppGenUtils.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
index 9dd72f63bd6..7679a73abfe 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
@@ -138,6 +138,10 @@ public class CppGenUtils {
// always use the short name for types within the ANSI C library
return ne.getName();
}
+ else if (owner instanceof ClassifierTemplateParameter) {
+ // return short name for template in Type
+ return ne.getName();
+ }
String qName = ne.getName();
if (currentNS == ne.getNamespace()) {
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 633f6c52673..184390e5135 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
@@ -48,16 +48,16 @@ class CppClassifierGenerator {
«CppIncludeUtil.CppIncludeHeader(classifier)»
- «var tb = classifier.templateBindings»
- «var templateElement = tb.get(0)»
+ «var tb = GenUtils.getTemplateBinding(classifier)»
+ «var templateElement = tb.targets.get(0)»
«CppIncludeUtil.includeDirective(
GenUtils.getFullPath(classifier.package) + '/' + (templateElement.owner as NamedElement).name + '.' +
CppCodeGenUtils.getHeaderSuffix())»
«CppGenUtils.openNS(classifier)»
/************************************************************/
- typedef «(templateElement.owner as NamedElement).name»«FOR ps : templateElement.parameterSubstitutions»«CppTemplates.
- CppTemplateBindingParameter(ps)»«ENDFOR» «classifier.name»;
+ typedef «(templateElement.owner as NamedElement).name»<«FOR ps : tb.parameterSubstitutions SEPARATOR ', '»«
+ CppTemplates.CppTemplateBindingParameter(ps)»«ENDFOR»> «classifier.name»;
«CppGenUtils.closeNS(classifier)»
@@ -96,10 +96,10 @@ class CppClassifierGenerator {
«ENDFOR»
/************************************************************/
- «var tb = GenUtils.getTemplateBindings(classifier as Class)»
+ «var tb = GenUtils.getTemplateBinding(classifier)»
«var templateElement = tb.targets.get(0)»
- template class «(templateElement.owner as NamedElement).name»<«FOR ps : tb.parameterSubstitutions»«CppTemplates.
- CppTemplateBindingParameter(ps)»«ENDFOR»;
+ template class «(templateElement.owner as NamedElement).name»<«FOR ps : tb.parameterSubstitutions SEPARATOR ', '»«
+ CppTemplates.CppTemplateBindingParameter(ps)»«ENDFOR»>;
«CppGenUtils.closeNS(classifier)»
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 1898a8c38c2..7ab2661f252 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
@@ -20,10 +20,10 @@ import org.eclipse.papyrus.codegen.base.GenUtils
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
*/
class CppEnumerations {
- static def CppEnumerationDefinition(Enumeration enume) '''
- «CppDocumentation.CppElementDoc(enume)»
- enum «enume.name» {
- «FOR ownedLiteral : enume.ownedLiterals»
+ static def CppEnumerationDefinition(Enumeration enumeration) '''
+ «CppDocumentation.CppElementDoc(enumeration)»
+ enum «enumeration.name» {
+ «FOR ownedLiteral : enumeration.ownedLiterals»
«CppDocumentation.CppElementDoc(ownedLiteral)»
«ownedLiteral.name»«IF GenUtils.hasStereotype(ownedLiteral, CppInit)»«UMLUtil.
getStereotypeApplication(ownedLiteral, CppInit).value»«ENDIF»,
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 5d644df9701..b510c788a42 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
@@ -76,7 +76,7 @@ class CppOperations {
static def CppConstInit(Operation operation) {
if (GenUtils.hasStereotype(operation, ConstInit) && GenUtils.hasStereotype(operation, Create)) {
- (UMLUtil.getStereotypeApplication(operation, ConstInit) as ConstInit).initialisation
+ ": " + UMLUtil.getStereotypeApplication(operation, ConstInit).initialisation
}
}

Back to the top