diff options
author | Philip Rauwolf <rauwolf@itestra.de> | 2013-11-13 15:58:30 +0100 |
---|---|---|
committer | Philip Rauwolf <rauwolf@itestra.de> | 2013-11-14 17:57:58 +0100 |
commit | 767865c9bb371825662b668ab27cf8989562f2b6 (patch) | |
tree | 32e5f902d07add5de3262bc6fef149e2aae4c573 | |
parent | 0d9c014bbdc6c842c9dd48fd880a319eaecedc77 (diff) | |
download | genivi-common-api-runtime-767865c9bb371825662b668ab27cf8989562f2b6.tar.gz |
Inline arrays in complex types are now respected in the2.1.4
TypeOutputStream.
Reason was that the FTypeGenerator did not take into account inline
array definitions. Instead, all types in complex data types were handled
as if they were just those types. Only structs with inline array
definitions used within unions were affected by this bug.
Also removed some dead code.
Change-Id: Ia8e868a673ad1ab1a1c77e480f3725b1f254ac60
2 files changed, 22 insertions, 22 deletions
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 2cfba8d..f35a752 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 @@ -252,7 +252,7 @@ class FTypeGenerator { «fStructType.baseStructName»::writeToTypeOutputStream(typeOutputStream); «ENDIF» «FOR element : fStructType.elements» - «element.type.typeStreamSignature(deploymentAccessor)» + «element.type.typeStreamSignature(deploymentAccessor, element)» «ENDFOR» } }; @@ -495,20 +495,6 @@ class FTypeGenerator { fUnionType.elements.forEach[type.getRequiredHeaderPath(generatedHeaders, libraryHeaders)] libraryHeaders.addAll('cstdint', 'memory') } - - def private getRequiredHeaderPath(FTypeRef fTypeRef) { - if (fTypeRef.derived != null) - return fTypeRef.derived.FTypeCollection.headerPath - return fTypeRef.predefined.requiredHeaderPath - } - - def private getRequiredHeaderPath(FBasicTypeId fBasicTypeId) { - switch fBasicTypeId { - case FBasicTypeId::STRING : 'string' - case FBasicTypeId::BYTE_BUFFER : 'CommonAPI/ByteBuffer.h' - default : 'cstdint' - } - } def private void getRequiredHeaderPath(FTypeRef fTypeRef, Collection<String> generatedHeaders, Collection<String> libraryHeaders) { if (fTypeRef.derived != null) { 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 7940583..59d1475 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 @@ -46,6 +46,7 @@ import org.genivi.commonapi.core.preferences.FPreferences import org.osgi.framework.FrameworkUtil import org.eclipse.core.resources.IResource import org.osgi.framework.Version +import org.franca.core.franca.FField class FrancaGeneratorExtensions { @@ -751,9 +752,22 @@ class FrancaGeneratorExtensions { } } - def String typeStreamSignature(FTypeRef fTypeRef, DeploymentInterfacePropertyAccessor deploymentAccessor) { - if (fTypeRef.derived != null) + def String typeStreamSignature(FTypeRef fTypeRef, DeploymentInterfacePropertyAccessor deploymentAccessor, FField forThisElement) { + if (forThisElement.array != null && forThisElement.array.equals("[]")) { + var String ret = "" + ret = ret + "typeOutputStream.beginWriteVectorType();\n" + ret = ret + fTypeRef.actualTypeStreamSignature(deploymentAccessor) + ret = ret + "typeOutputStream.endWriteVectorType();\n" + return ret + } + return fTypeRef.actualTypeStreamSignature(deploymentAccessor) + } + + def String actualTypeStreamSignature(FTypeRef fTypeRef, DeploymentInterfacePropertyAccessor deploymentAccessor) { + if (fTypeRef.derived != null) { return fTypeRef.derived.typeStreamFTypeSignature(deploymentAccessor) + } + return fTypeRef.predefined.basicTypeStreamSignature } @@ -777,20 +791,20 @@ class FrancaGeneratorExtensions { def private dispatch String typeStreamFTypeSignature(FTypeDef fTypeDef, DeploymentInterfacePropertyAccessor deploymentAccessor) { - return fTypeDef.actualType.typeStreamSignature(deploymentAccessor) + return fTypeDef.actualType.actualTypeStreamSignature(deploymentAccessor) } def private dispatch String typeStreamFTypeSignature(FArrayType fArrayType, DeploymentInterfacePropertyAccessor deploymentAccessor) { return 'typeOutputStream.beginWriteVectorType();\n' + - fArrayType.elementType.typeStreamSignature(deploymentAccessor) + '\n' + + fArrayType.elementType.actualTypeStreamSignature(deploymentAccessor) + '\n' + 'typeOutputStream.endWriteVectorType();' } def private dispatch String typeStreamFTypeSignature(FMapType fMap, DeploymentInterfacePropertyAccessor deploymentAccessor) { - return 'typeOutputStream.beginWriteMapType();\n' + fMap.keyType.typeStreamSignature(deploymentAccessor) + '\n' + - fMap.valueType.typeStreamSignature(deploymentAccessor) + '\n' + 'typeOutputStream.endWriteMapType();' + return 'typeOutputStream.beginWriteMapType();\n' + fMap.keyType.actualTypeStreamSignature(deploymentAccessor) + '\n' + + fMap.valueType.actualTypeStreamSignature(deploymentAccessor) + '\n' + 'typeOutputStream.endWriteMapType();' } def private dispatch String typeStreamFTypeSignature(FStructType fStructType, @@ -812,7 +826,7 @@ class FrancaGeneratorExtensions { def private String getElementsTypeStreamSignature(FStructType fStructType, DeploymentInterfacePropertyAccessor deploymentAccessor) { - var signature = fStructType.elements.map[type.typeStreamSignature(deploymentAccessor)].join + var signature = fStructType.elements.map[type.typeStreamSignature(deploymentAccessor, it)].join if (fStructType.base != null) signature = fStructType.base.getElementsTypeStreamSignature(deploymentAccessor) + signature |