summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Kanchev <kanchev@itestra.com>2013-07-03 10:15:59 +0200
committerAleksandar Kanchev <kanchev@itestra.com>2013-07-03 10:15:59 +0200
commit629e03e25e4caeff3b344a8477fc7284a889fa42 (patch)
treec31126cbb14a9b2a56071a85d0687e5bf46cd105
parentec32b9332ab756d9d4f5b4c2144cbd5419efb01a (diff)
downloadgenivi-common-api-runtime-629e03e25e4caeff3b344a8477fc7284a889fa42.tar.gz
polymorphic: switch to franca polymorphic keyword
franca 0.8.8 supports the polymorphic keyword for structs. This patch uses this keyword instead of the experimental comment.
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeCollectionGenerator.xtend2
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend6
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FrancaGeneratorExtensions.xtend15
3 files changed, 9 insertions, 14 deletions
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeCollectionGenerator.xtend b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeCollectionGenerator.xtend
index edf4c51..d661ee1 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeCollectionGenerator.xtend
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeCollectionGenerator.xtend
@@ -122,7 +122,7 @@ class FTypeCollectionGenerator {
def private getAllDerivedFStructTypeHeaderPaths(FTypeCollection fTypeCollection) {
return fTypeCollection.types
- .filter[it instanceof FStructType && (it as FStructType).isPolymorphic]
+ .filter[it instanceof FStructType && (it as FStructType).hasPolymorphicBase]
.map[(it as FStructType).derivedFStructTypes]
.flatten
.map[(eContainer as FTypeCollection).headerPath]
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
index 62a9032..b54472f 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
@@ -97,7 +97,7 @@ class FTypeGenerator {
«fStructType.name»(«fStructType.allElements.map[getConstReferenceVariable(fStructType)].join(", ")»);
«ENDIF»
- «IF fStructType.isPolymorphic»
+ «IF fStructType.hasPolymorphicBase»
enum: uint32_t { SERIAL_ID = 0x«Integer::toHexString(fStructType.serialId)» };
static «fStructType.name»* createInstance(const uint32_t& serialId);
@@ -212,7 +212,7 @@ class FTypeGenerator {
}
«ENDIF»
- «IF fStructType.isPolymorphic»
+ «IF fStructType.hasPolymorphicBase»
«fStructType.getClassNamespace(parent)»* «fStructType.getClassNamespace(parent)»::createInstance(const uint32_t& serialId) {
if (serialId == SERIAL_ID)
return new «fStructType.name»;
@@ -395,7 +395,7 @@ class FTypeGenerator {
if (fStructType.base != null)
return fStructType.base.getRelativeNameReference(fStructType)
- if (fStructType.isPolymorphic)
+ if (fStructType.hasPolymorphicBase)
return "CommonAPI::SerializablePolymorphicStruct"
return "CommonAPI::SerializableStruct"
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FrancaGeneratorExtensions.xtend b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FrancaGeneratorExtensions.xtend
index c6a1599..d34cc11 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FrancaGeneratorExtensions.xtend
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FrancaGeneratorExtensions.xtend
@@ -379,7 +379,7 @@ class FrancaGeneratorExtensions {
def getTypeName(FTypedElement element, EObject source) {
var typeName = element.type.getNameReference(source)
- if (element.type.derived instanceof FStructType && (element.type.derived as FStructType).isPolymorphic)
+ if (element.type.derived instanceof FStructType && (element.type.derived as FStructType).hasPolymorphicBase)
typeName = 'std::shared_ptr<' + typeName + '>'
if ("[]".equals(element.array))
@@ -571,16 +571,11 @@ class FrancaGeneratorExtensions {
}
- def boolean isPolymorphic(FStructType fStructType) {
- if (fStructType.base != null && fStructType.base.isPolymorphic)
- return true
+ def boolean hasPolymorphicBase(FStructType fStructType) {
+ if (fStructType.isPolymorphic)
+ return true;
- if (fStructType.comment != null)
- return fStructType.comment.elements
- .filter[type == FAnnotationType::EXPERIMENTAL]
- .exists[comment.equalsIgnoreCase('polymorphic')]
-
- return false;
+ return fStructType.base != null && fStructType.base.hasPolymorphicBase
}
def getSerialId(FStructType fStructType) {