Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ActorClassGen.xtend')
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ActorClassGen.xtend32
1 files changed, 24 insertions, 8 deletions
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ActorClassGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ActorClassGen.xtend
index 608f61ab1..d1e052c41 100644
--- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ActorClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ActorClassGen.xtend
@@ -94,19 +94,35 @@ class ActorClassGen extends GenericActorClassGenerator {
typedef struct «xpac.name» «xpac.name»;
/* const part of ActorClass (ROM) */
- typedef struct «xpac.name»_const {
-««« TODO: needed? const «xpac.name»* actor;
- /* Ports */
- «FOR ep : ac.getEndPorts()»
- const «ep.getPortClassName()» «ep.name»;
- «ENDFOR»
- } «xpac.name»_const;
+ «IF ac.allEndPorts.empty»
+ /* this actor class has no ports and thus no constant data */
+ «ELSE»
+ typedef struct «xpac.name»_const {
+ /* simple ports */
+ «FOR ep : ac.allEndPorts»
+ «IF ep.multiplicity==1»
+ const «ep.getPortClassName()» «ep.name»;
+ «ENDIF»
+ «ENDFOR»
+
+ /* replicated ports */
+ «FOR ep : ac.allEndPorts»
+ «IF ep.multiplicity!=1»
+ const etReplPort «ep.name»;
+ «ENDIF»
+ «ENDFOR»
+ } «xpac.name»_const;
+ «ENDIF»
/* variable part of ActorClass (RAM) */
struct «xpac.name» {
- const «xpac.name»_const* constData;
+ «IF !ac.allEndPorts.empty»
+ const «xpac.name»_const* constData;
+
+ «ENDIF»
«helpers.attributes(ac.allAttributes)»
«IF xpac.hasNonEmptyStateMachine»
+
«stateMachineGen.genDataMembers(xpac, ac)»
«ENDIF»
};

Back to the top