Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2012-12-10 17:42:25 +0000
committerHenrik Rentz-Reichert2012-12-10 17:42:25 +0000
commit04e60b82e835dee10178899244271d082a3ebd57 (patch)
tree7d1b7f53163e7ec66298914f01cbf37a66efe112
parent9a82ebef3aca482d2457c84eb2a0e72f13f84400 (diff)
downloadorg.eclipse.etrice-04e60b82e835dee10178899244271d082a3ebd57.tar.gz
org.eclipse.etrice-04e60b82e835dee10178899244271d082a3ebd57.tar.xz
org.eclipse.etrice-04e60b82e835dee10178899244271d082a3ebd57.zip
[generator] some fixes and changes for C++ generation
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.xtend12
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java24
2 files changed, 23 insertions, 13 deletions
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.xtend b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.xtend
index d8d7e9007..05bb562d9 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.xtend
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.xtend
@@ -120,7 +120,11 @@ class GenericStateMachineGenerator {
}
else
"->localId"
-
+ val ifItemPtr = "InterfaceItemBase"+langExt.pointerLiteral()
+ val constIfItemPtr = if (langExt.usesPointers)
+ "const "+ifItemPtr
+ else
+ ifItemPtr
'''
«IF shallGenerateOneFile»
/* state IDs */
@@ -147,7 +151,7 @@ class GenericStateMachineGenerator {
«IF (!langExt.usesInheritance || xpac.isOwnObject(tr)) && tr.hasActionCode()»
«var start = xpac.getChain(tr).transition»
«var hasArgs = start instanceof NonInitialTransition && !(start instanceof GuardedTransition)»
- «langExt.accessLevelProtected»void «opScopePriv»«tr.getActionCodeOperationName()»(«langExt.selfPointer(ac.name, hasArgs)»«IF hasArgs»InterfaceItemBase«langExt.pointerLiteral()» ifitem«transitionChainGenerator.generateArgumentList(xpac, tr)»«ENDIF») {
+ «langExt.accessLevelProtected»void «opScopePriv»«tr.getActionCodeOperationName()»(«langExt.selfPointer(ac.name, hasArgs)»«IF hasArgs»«constIfItemPtr» ifitem«transitionChainGenerator.generateArgumentList(xpac, tr)»«ENDIF») {
«AbstractGenerator::getInstance().getTranslatedCode(tr.action)»
}
«ENDIF»
@@ -181,7 +185,7 @@ class GenericStateMachineGenerator {
* @param generic_data - the generic data pointer
* @return the ID of the final state
*/
- «privAccess»int «opScopePriv»executeTransitionChain(«self»int chain«IF handleEvents», InterfaceItemBase«langExt.pointerLiteral()» ifitem, «langExt.voidPointer» generic_data«ENDIF») {
+ «privAccess»int «opScopePriv»executeTransitionChain(«self»int chain«IF handleEvents», «constIfItemPtr» ifitem, «langExt.voidPointer» generic_data«ENDIF») {
switch (chain) {
«var allchains = xpac.getTransitionChains()»
«FOR tc : allchains»
@@ -245,7 +249,7 @@ class GenericStateMachineGenerator {
}
/* receiveEvent contains the main implementation of the FSM */
- «publicIf»void «opScope»receiveEvent(«langExt.selfPointer(ac.name, handleEvents)»«IF handleEvents»InterfaceItemBase«langExt.pointerLiteral()» ifitem, int evt, «langExt.voidPointer» generic_data«ENDIF») {
+ «publicIf»void «opScope»receiveEvent(«langExt.selfPointer(ac.name, handleEvents)»«IF handleEvents»«ifItemPtr» ifitem, int evt, «langExt.voidPointer» generic_data«ENDIF») {
«IF async»
int trigger = (ifitem==«langExt.nullPointer»)? POLLING : ifitem«getLocalId» + EVT_SHIFT*evt;
«ELSEIF eventDriven»
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java
index 8dca94aac..8fb7879b4 100644
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java
+++ b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java
@@ -226,6 +226,17 @@ public class GenericStateMachineGenerator {
_xifexpression_2 = "->localId";
}
final String getLocalId = _xifexpression_2;
+ String _pointerLiteral = this.langExt.pointerLiteral();
+ final String ifItemPtr = ("InterfaceItemBase" + _pointerLiteral);
+ String _xifexpression_4 = null;
+ boolean _usesPointers_1 = this.langExt.usesPointers();
+ if (_usesPointers_1) {
+ String _plus = ("const " + ifItemPtr);
+ _xifexpression_4 = _plus;
+ } else {
+ _xifexpression_4 = ifItemPtr;
+ }
+ final String constIfItemPtr = _xifexpression_4;
StringConcatenation _builder = new StringConcatenation();
{
if (shallGenerateOneFile) {
@@ -326,9 +337,7 @@ public class GenericStateMachineGenerator {
_builder.append(_selfPointer, "");
{
if (hasArgs) {
- _builder.append("InterfaceItemBase");
- String _pointerLiteral = this.langExt.pointerLiteral();
- _builder.append(_pointerLiteral, "");
+ _builder.append(constIfItemPtr, "");
_builder.append(" ifitem");
String _generateArgumentList = this.transitionChainGenerator.generateArgumentList(xpac, tr);
_builder.append(_generateArgumentList, "");
@@ -472,9 +481,8 @@ public class GenericStateMachineGenerator {
_builder.append("int chain");
{
if (handleEvents) {
- _builder.append(", InterfaceItemBase");
- String _pointerLiteral_1 = this.langExt.pointerLiteral();
- _builder.append(_pointerLiteral_1, "");
+ _builder.append(", ");
+ _builder.append(constIfItemPtr, "");
_builder.append(" ifitem, ");
String _voidPointer = this.langExt.voidPointer();
_builder.append(_voidPointer, "");
@@ -796,9 +804,7 @@ public class GenericStateMachineGenerator {
_builder.append(_selfPointer_7, "");
{
if (handleEvents) {
- _builder.append("InterfaceItemBase");
- String _pointerLiteral_2 = this.langExt.pointerLiteral();
- _builder.append(_pointerLiteral_2, "");
+ _builder.append(ifItemPtr, "");
_builder.append(" ifitem, int evt, ");
String _voidPointer_1 = this.langExt.voidPointer();
_builder.append(_voidPointer_1, "");

Back to the top