diff options
author | Aleksandar Kanchev <kanchev@itestra.com> | 2013-07-03 10:15:59 +0200 |
---|---|---|
committer | Aleksandar Kanchev <kanchev@itestra.com> | 2013-07-03 10:15:59 +0200 |
commit | 629e03e25e4caeff3b344a8477fc7284a889fa42 (patch) | |
tree | c31126cbb14a9b2a56071a85d0687e5bf46cd105 | |
parent | ec32b9332ab756d9d4f5b4c2144cbd5419efb01a (diff) | |
download | genivi-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.
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) { |