summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rauwolf <rauwolf@itestra.de>2013-11-13 15:58:30 +0100
committerPhilip Rauwolf <rauwolf@itestra.de>2013-11-14 17:57:58 +0100
commit767865c9bb371825662b668ab27cf8989562f2b6 (patch)
tree32e5f902d07add5de3262bc6fef149e2aae4c573
parent0d9c014bbdc6c842c9dd48fd880a319eaecedc77 (diff)
downloadgenivi-common-api-runtime-2.1.4.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
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend16
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FrancaGeneratorExtensions.xtend28
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