diff options
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 |