Просмотр исходного кода

Merge branch 'master' of https://github.com/Yakindu/statecharts.git

andreas muelder 7 лет назад
Родитель
Сommit
c7f510d5a7
79 измененных файлов с 618 добавлено и 657 удалено
  1. 7 7
      manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_08_genmodel.textile
  2. 7 7
      manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_09_template_proposals.textile
  3. 2 2
      manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_11_operations.textile
  4. 1 1
      manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_13_state.textile
  5. 0 0
      plugins/org.yakindu.sct.doc.user/src/tutorials/images/tuto_light_switch_210_error_marker_and_pop-up.png
  6. 5 5
      plugins/org.yakindu.sct.doc.user/src/tutorials/tutorials.textile
  7. 5 5
      plugins/org.yakindu.sct.doc.user/src/user-guide/editing_statecharts.textile
  8. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_010_lightswitch_010_statechart.png
  9. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_020_start_debugging_010_debug_as_menu.full.png
  10. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_020_start_debugging_010_debug_as_menu.png
  11. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_010_setting_on_transition.full.png
  12. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_010_setting_on_transition.png
  13. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_020_transition_and_state_with_breakpoints.full.png
  14. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_020_transition_and_state_with_breakpoints.png
  15. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_010_a_freshly-taken_snapshot.png
  16. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_020_inspecting_variables.png
  17. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_020_snapshot_details_variables.full.png
  18. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_020_snapshot_details_variables.png
  19. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_025_details_view.png
  20. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_030_inspecting-a-snapshots-state-machine.png
  21. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_030_snapshot_details_states.full.png
  22. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_030_snapshot_details_states.png
  23. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_040_restoring-a-snapshot.png
  24. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_040_snapshot_details_combined.png
  25. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_breakpoint_disabled.png
  26. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_breakpoint_enabled.png
  27. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_breakpoint_skip.png
  28. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_event.png
  29. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_event_raised.png
  30. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_resume.png
  31. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_stepover.png
  32. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_advsim_010_lightswitch_020_simulation.png
  33. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_01.png
  34. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_02.png
  35. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_03.png
  36. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_04.png
  37. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_symbol_event.png
  38. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_symbol_event_raised.png
  39. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/mouse_pointer_windows_7.png
  40. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_010_statechart_simulator_run_as_statechart_simulation.png
  41. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_020_statechart_simulator_state_off.png
  42. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_030_simulation_view.png
  43. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_030_simulation_view_full.png
  44. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_01.png
  45. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_02.png
  46. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_03.png
  47. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_04.png
  48. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_breakpoint_disabled.png
  49. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_breakpoint_enabled.png
  50. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_breakpoint_skip.png
  51. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_event.png
  52. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_event_raised.png
  53. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_event_time.png
  54. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_resume.png
  55. BIN
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_stepover.png
  56. 0 1
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/tuto_light_switch_300_statechart_simulator_run_as_statechart_simulation.png
  57. 0 1
      plugins/org.yakindu.sct.doc.user/src/user-guide/images/tuto_light_switch_310_statechart_simulator_state_off.png
  58. 125 86
      plugins/org.yakindu.sct.doc.user/src/user-guide/simulating_statecharts.textile
  59. 51 39
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/StatemachineHeader.xtend
  60. 6 2
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/EventDrivenCppIncludeProviderModule.xtend
  61. 10 13
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/EventDrivenStatemachineHeader.xtend
  62. 43 41
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/EventDrivenStatemachineImplementation.xtend
  63. 1 0
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/StatechartEvents.xtend
  64. 0 4
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/Statemachine.xtend
  65. 28 25
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/eventdriven/EventDrivenStatemachine.xtend
  66. 1 1
      plugins/org.yakindu.sct.model.stext.ui/.gitignore
  67. 0 346
      plugins/org.yakindu.sct.model.stext.ui/plugin.xml_gen
  68. 9 0
      plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/StextPackage.java
  69. 1 0
      plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java
  70. 1 0
      plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java
  71. 1 0
      plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java
  72. 19 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/LocalEvents/LocalEvents.sgen
  73. 64 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/LocalEvents/LocalEventsTest.cc
  74. 19 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/NoLocalEvents/NoLocalEvents.sgen
  75. 64 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/NoLocalEvents/NoLocalEventsTest.cc
  76. 57 1
      test-plugins/org.yakindu.sct.generator.cpp.test/model/test.eventdriven.sgen
  77. 21 70
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/AllTests.java
  78. 35 0
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/LocalEventsTest.java
  79. 35 0
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/NoLocalEventsTest.java

Разница между файлами не показана из-за своего большого размера
+ 7 - 7
manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_08_genmodel.textile


Разница между файлами не показана из-за своего большого размера
+ 7 - 7
manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_09_template_proposals.textile


Разница между файлами не показана из-за своего большого размера
+ 2 - 2
manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_11_operations.textile


+ 1 - 1
manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_13_state.textile

@@ -1,6 +1,6 @@
 h1. YAKINDU Statechart Tools – Testcase 13 - Smart Editing
 
 |_. Nr |_. Testname |_. Test Instructions |_. Postconditions |_. Status|
-| 13.1 | State templates available | <ol><li><p>Select a state.</p></li><li><p>Press @[Ctrl+Space]@.</p></li></ol> | <ul><li><p>The following proposals are shown: "@Add subregion@", "@Add outgoing state@".</p></li><li><p>For each selected proposal, a corresponding documentation popup window opens.</p></li></ul> | %{color:red}open% |
+| 13.1 | State templates available | <ol><li><p>Select a state.</p></li><li><p>Press @[Ctrl+Space]@.</p></li></ol> | <ul><li><p>The following proposals are shown: "@Add subregion@", "@Add outgoing state@".</p></li><li><p>For each selected proposal, a corresponding documentation pop-up window opens.</p></li></ul> | %{color:red}open% |
 | 13.2 | Add composite behaviour | Double-click on the _Add subregion_ proposal. | A subregion is added to the selected state, containing an entry, a transition and a substate. The state is enlarged so that the whole content is shown. | %{color:red}open% |
 | 9.1 | Add orthogonal behavior | Double-click on the _Add outgoing state_ proposal. | A new state is added. A transition is drawn from the selected state to the new state. | %{color:red}open% |

plugins/org.yakindu.sct.doc.user/src/tutorials/images/tuto_light_switch_210_error_marker_and_popup.png → plugins/org.yakindu.sct.doc.user/src/tutorials/images/tuto_light_switch_210_error_marker_and_pop-up.png


Разница между файлами не показана из-за своего большого размера
+ 5 - 5
plugins/org.yakindu.sct.doc.user/src/tutorials/tutorials.textile


+ 5 - 5
plugins/org.yakindu.sct.doc.user/src/user-guide/editing_statecharts.textile

@@ -278,9 +278,9 @@ When the _Extract Subdiagram_ "refactoring":#edit_refactorings is executed on a
 
 Extracting a subdiagram creates "entry and exit points":../user-guide/statechart_language.html#sclang_entry_and_exit_points in the subdiagram as needed.
 
-!images/docu_subdiagram_020_preview.png(Subdiagram popup window)!
+!images/docu_subdiagram_020_preview.png(Subdiagram pop-up window)!
 
-p=. Subdiagram popup window
+p=. Subdiagram pop-up window
 
 A click on the decorator opens the subdiagram in a separate editor tab. The breadcrumb at the top allows easy navigation throughout the hierachy levels.
 
@@ -473,7 +473,7 @@ h3(#edit_using_text_proposals). Using text proposals
 
 Proposals assist you when writing statechart language expressions. Whenever editing some text anywhere in the graphical statechart editor or in the properties view, at any point you can press the @[Ctrl+Space]@ key combination to get some context-sensitive help.
 
-Certain proposals, like statechart language keywords, have documentation associated with them. When such a proposal is selected, either using the mouse or the keyboard, this information is shown in a secondary popup window next to the proposal.
+Certain proposals, like statechart language keywords, have documentation associated with them. When such a proposal is selected, either using the mouse or the keyboard, this information is shown in a secondary pop-up window next to the proposal.
 
 You can either use the mouse or the keyboard to select and insert a proposal in the text:
 * Double-click on a proposal to insert it in the text at the current position.
@@ -483,9 +483,9 @@ You can either use the mouse or the keyboard to select and insert a proposal in
 
 h3(#edit_using_action_proposals_on_states). Using actions proposals on states
 
-When a state is selected, @[Ctrl+Space]@ opens a popup window showing a context-sensitive menu with possible action choices to perform on the state.
+When a state is selected, @[Ctrl+Space]@ opens a pop-up window showing a context-sensitive menu with possible action choices to perform on the state.
 
-These action proposals have additional information associated to them. When a proposal is selected either using the mouse or the keyboard, this information is shown in a secondary popup window next to the proposal.
+These action proposals have additional information associated to them. When a proposal is selected either using the mouse or the keyboard, this information is shown in a secondary pop-up window next to the proposal.
 
 You can either use the mouse or the keyboard to execute a proposal:
 * Double-click on a proposal to execute it.

BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_010_lightswitch_010_statechart.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_020_start_debugging_010_debug_as_menu.full.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_020_start_debugging_010_debug_as_menu.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_010_setting_on_transition.full.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_010_setting_on_transition.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_020_transition_and_state_with_breakpoints.full.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_030_breakpoint_020_transition_and_state_with_breakpoints.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_010_a_freshly-taken_snapshot.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_020_inspecting_variables.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_020_snapshot_details_variables.full.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_020_snapshot_details_variables.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_025_details_view.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_030_inspecting-a-snapshots-state-machine.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_030_snapshot_details_states.full.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_030_snapshot_details_states.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_040_restoring-a-snapshot.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_050_snapshots_040_snapshot_details_combined.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_breakpoint_disabled.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_breakpoint_enabled.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_breakpoint_skip.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_event.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_event_raised.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_resume.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/advsim_symbol_stepover.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_advsim_010_lightswitch_020_simulation.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_01.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_02.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_03.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_launch_configuration_04.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_symbol_event.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/docu_symbol_event_raised.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/mouse_pointer_windows_7.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_010_statechart_simulator_run_as_statechart_simulation.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_020_statechart_simulator_state_off.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_030_simulation_view.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_030_simulation_view_full.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_01.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_02.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_03.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/simulation_040_launch_configuration_04.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_breakpoint_disabled.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_breakpoint_enabled.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_breakpoint_skip.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_event.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_event_raised.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_event_time.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_resume.png


BIN
plugins/org.yakindu.sct.doc.user/src/user-guide/images/symbol_stepover.png


+ 0 - 1
plugins/org.yakindu.sct.doc.user/src/user-guide/images/tuto_light_switch_300_statechart_simulator_run_as_statechart_simulation.png

@@ -1 +0,0 @@
-../../tutorials/images/tuto_light_switch_300_statechart_simulator_run_as_statechart_simulation.png

+ 0 - 1
plugins/org.yakindu.sct.doc.user/src/user-guide/images/tuto_light_switch_310_statechart_simulator_state_off.png

@@ -1 +0,0 @@
-../../tutorials/images/tuto_light_switch_310_statechart_simulator_state_off.png

Разница между файлами не показана из-за своего большого размера
+ 125 - 86
plugins/org.yakindu.sct.doc.user/src/user-guide/simulating_statecharts.textile


+ 51 - 39
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/StatemachineHeader.xtend

@@ -78,64 +78,72 @@ class StatemachineHeader extends org.yakindu.sct.generator.c.StatemachineHeader
 		'''
 			class «module» : «interfaceExtensions»
 			{
-				«generatePublicClassmembers»
-				«generateInnerClasses»
-				«generatePrivateClassmembers»
+				public:
+					«generatePublicClassmembers»
+				protected:
+					«generateProtectedClassmembers»
+				private:
+					«generatePrivateClassmembers»
 			};
 		'''
 	}
 
 	def protected generatePublicClassmembers(ExecutionFlow it) {
 		'''
-			public:
-				
-				«module»();
-				
-				~«module»();
-				
-				«statesEnumDecl»
-				
-				«FOR s : it.scopes»«s.createPublicScope»«ENDFOR»
-				
-				«publicFunctionPrototypes»
-				
-				/*! Checks if the specified state is active (until 2.4.1 the used method for states was calles isActive()). */
-				sc_boolean «stateActiveFctID»(«statesEnumType» state) const;
-				
-				«IF timed»
-					//! number of time events used by the state machine.
-					static const sc_integer «timeEventsCountConst» = «timeEvents.size»;
-					
-					//! number of time events that can be active at once.
-					static const sc_integer «timeEventsCountparallelConst» = «(it.sourceElement as Statechart).maxNumberOfParallelTimeEvents»;
-				«ENDIF»
+			«module»();
+			
+			~«module»();
+			
+			«statesEnumDecl»
+			
+			«FOR s : it.scopes»«s.createPublicScope»«ENDFOR»
+			
+			«publicFunctionPrototypes»
+			
+			/*! Checks if the specified state is active (until 2.4.1 the used method for states was calles isActive()). */
+			sc_boolean «stateActiveFctID»(«statesEnumType» state) const;
+			
+			«IF timed»
+				//! number of time events used by the state machine.
+				static const sc_integer «timeEventsCountConst» = «timeEvents.size»;
 				
+				//! number of time events that can be active at once.
+				static const sc_integer «timeEventsCountparallelConst» = «(it.sourceElement as Statechart).maxNumberOfParallelTimeEvents»;
+			«ENDIF»
+			«IF entry.innerClassVisibility == "public"»
+			
+			«generateInnerClasses»
+			«ENDIF»
+		'''
+	}
+	
+	def protected generateProtectedClassmembers(ExecutionFlow it) {
+		'''
+			«IF entry.innerClassVisibility == "protected"»
+			«generateInnerClasses»
+			«ENDIF»
 		'''
 	}
 
 	def protected generateInnerClasses(ExecutionFlow it) {
 		'''
-			«entry.innerClassVisibility»:
+			«IF (timed || hasOperationCallbacks)»
+			«copyConstructorDecl»
+			«assignmentOperatorDecl»
+			«ENDIF»
 			
-				«IF (timed || hasOperationCallbacks)»
-				«copyConstructorDecl»
-				
-				«assignmentOperatorDecl»
-				«ENDIF»
+			«FOR s : scopes.filter(typeof(InternalScope))»«s.createInterface»«ENDFOR»
 			
-				«FOR s : scopes.filter(typeof(InternalScope))»«s.createInterface»«ENDFOR»
+			«statemachineTypeDecl»
 			
-				«statemachineTypeDecl»
-				
-				«prototypes»
-				
+			«prototypes»
 		'''
 	}
 	
 	
 	def protected copyConstructorDecl(ExecutionFlow it) {
 		'''
-		«module»(const «module» &rhs);
+			«module»(const «module» &rhs);
 		'''
 	}
 	
@@ -145,8 +153,12 @@ class StatemachineHeader extends org.yakindu.sct.generator.c.StatemachineHeader
 		'''
 	}
 	
-		def protected generatePrivateClassmembers(ExecutionFlow it) {
-		''''''
+	def protected generatePrivateClassmembers(ExecutionFlow it) {
+		'''
+			«IF entry.innerClassVisibility == "private"»
+			«generateInnerClasses»
+			«ENDIF»
+		'''
 	}
 
 	def protected getInterfaceExtensions(ExecutionFlow flow) {

+ 6 - 2
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/EventDrivenCppIncludeProviderModule.xtend

@@ -1,14 +1,18 @@
 package org.yakindu.sct.generator.cpp.eventdriven
 
+import com.google.inject.Inject
 import java.util.List
 import org.yakindu.sct.generator.c.IGenArtifactConfigurations
 import org.yakindu.sct.generator.c.IncludeProvider
 import org.yakindu.sct.model.sexec.ExecutionFlow
+import org.yakindu.sct.model.sexec.extensions.SExecExtensions
 
 final class EventDrivenCppIncludeProviderModule implements IncludeProvider {
-
+	@Inject protected extension SExecExtensions
 	override getIncludes(ExecutionFlow it, List<CharSequence> includes, extension IGenArtifactConfigurations artifactConfigs) {
-		includes += "#include <deque>"
+		if(hasLocalEvents) {
+			includes += "#include <deque>"
+		}
 		includes
 	}
 	

+ 10 - 13
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/EventDrivenStatemachineHeader.xtend

@@ -34,20 +34,16 @@ class EventDrivenStatemachineHeader extends StatemachineHeader {
 		'''
 	}
 	
-	override protected generatePublicClassmembers(ExecutionFlow it) {
-		'''
-		«super.generatePublicClassmembers(it)»
-		'''
-	}
-	
 	override protected generatePrivateClassmembers(ExecutionFlow it) {
 		'''
-		private:
+			«super.generatePrivateClassmembers(it)»
+			«IF hasLocalEvents»
 			std::deque<«eventNamespaceName»::SctEvent*> internalEventQueue;
 			
 			«eventNamespaceName»::SctEvent* getNextEvent();
 			
 			void dispatch_event(«eventNamespaceName»::SctEvent * event);
+			«ENDIF»
 		'''
 	}
 	
@@ -55,8 +51,9 @@ class EventDrivenStatemachineHeader extends StatemachineHeader {
 		'''
 		«super.protectedInnerClassMembers(scope)»
 		«scope.execution_flow.module()» * parent;
+		«IF scope.flow.hasLocalEvents»
 		void dispatch_event(«scope.flow.eventNamespaceName»::SctEvent * event);
-		
+		«ENDIF»
 		'''
 	}
 	
@@ -73,13 +70,13 @@ class EventDrivenStatemachineHeader extends StatemachineHeader {
 			//! Inner class for «simpleName» interface scope.
 			class «interfaceName»
 			{
-				
 				public:
-					«interfaceName»(«execution_flow.module()» * parent): 
-					«FOR init : toInit SEPARATOR ","»
-						«init»
-					«ENDFOR»
+					«interfaceName»(«execution_flow.module()» * parent):
+						«FOR init : toInit SEPARATOR ","»
+							«init»
+						«ENDFOR»
 					{}
+					
 					«FOR d : declarations»
 						«d.functionPrototypes»
 					«ENDFOR»

+ 43 - 41
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/EventDrivenStatemachineImplementation.xtend

@@ -30,6 +30,7 @@ class EventDrivenStatemachineImplementation extends StatemachineImplementation {
 	@Inject extension EventNaming eventNaming
 	
 	override additionalFunctions(ExecutionFlow it) {
+		if(!hasLocalEvents) return ''''''
 		'''
 		«nextEventFunction»
 		
@@ -40,6 +41,7 @@ class EventDrivenStatemachineImplementation extends StatemachineImplementation {
 	}
 	
 	override protected usingNamespaces(ExecutionFlow it) {
+		if(!hasLocalEvents) return ''''''
 		'''using namespace «eventNamespaceName»;'''
 	}
 	
@@ -51,31 +53,34 @@ class EventDrivenStatemachineImplementation extends StatemachineImplementation {
 			{
 				*(sc_boolean*)evid = true;
 				runCycle();
-			}				
+			}
 		}
 	'''
 	
-	override runCycleFunction(ExecutionFlow it) { 
-	'''
-		void «module»::runCycle()
-		{
-			clearOutEvents();
-			
-			SctEvent * currentEvent = getNextEvent();
-			
-			do
+	override runCycleFunction(ExecutionFlow it) {
+		if(!hasLocalEvents) {
+			return super.runCycleFunction(it)
+		}
+		'''
+			void «module»::runCycle()
 			{
-				/* Set event flags as usual */
-				dispatch_event(currentEvent);
+				clearOutEvents();
 				
-				«runCycleFunctionForLoop»
+				SctEvent * currentEvent = getNextEvent();
 				
-				/* Delete event from memory */
-				delete currentEvent;
-				clearInEvents();
-			} while((currentEvent = getNextEvent()));
-		}
-	'''
+				do
+				{
+					/* Set event flags as usual */
+					dispatch_event(currentEvent);
+					
+					«runCycleFunctionForLoop»
+					
+					/* Delete event from memory */
+					delete currentEvent;
+					clearInEvents();
+				} while((currentEvent = getNextEvent()));
+			}
+		'''
 	}
 	
 	def getNextEventFunction(ExecutionFlow it) {
@@ -127,31 +132,28 @@ class EventDrivenStatemachineImplementation extends StatemachineImplementation {
 
 	def dispatch generateInterfaceDispatchFunction(ExecutionFlow it, Scope s) {
 		'''
-			«val localEvents = s.declarations.filter(EventDefinition).filter[direction == Direction::LOCAL]»
-			«IF localEvents.size > 0»
-				void «module»::«s.interfaceName»::dispatch_event(SctEvent * event)
+			void «module»::«s.interfaceName»::dispatch_event(SctEvent * event)
+			{
+				switch(event->name)
 				{
-					switch(event->name)
-					{
-						«FOR e : localEvents»
-							case «e.eventEnumMemberName»:
-							{
-								«IF e.hasValue»
-									«e.eventClassName» * e = static_cast<«e.eventClassName»*>(event);
-									if(e != 0) {
-										internal_«e.asRaiser»(e->value);
-									}
-								«ELSE»
-									internal_«e.asRaiser»();
-								«ENDIF»
-								break;
-							}
-						«ENDFOR»
-						default:
+					«FOR e : s.localEvents»
+						case «e.eventEnumMemberName»:
+						{
+							«IF e.hasValue»
+								«e.eventClassName» * e = static_cast<«e.eventClassName»*>(event);
+								if(e != 0) {
+									internal_«e.asRaiser»(e->value);
+								}
+							«ELSE»
+								internal_«e.asRaiser»();
+							«ENDIF»
 							break;
 						}
-					}
-				«ENDIF»
+					«ENDFOR»
+					default:
+						break;
+				}
+			}
 			'''
 	}
 

+ 1 - 0
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/eventdriven/StatechartEvents.xtend

@@ -37,6 +37,7 @@ class StatechartEvents {
 	protected ExecutionFlow flow
 	
 	def content(ExecutionFlow it) {
+		if(!hasLocalEvents) return ''''''
 		'''
 		#ifndef «generateHeaderDefineGuard»
 		#define «generateHeaderDefineGuard»

+ 0 - 4
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/Statemachine.xtend

@@ -171,10 +171,6 @@ class Statemachine {
 		«ENDIF»
 	'''
 	
-	def hasInternalEvents(ExecutionFlow it) {
-		! flow.internalScopeEvents.empty
-	}
-	
 	//reused by interfaces
 	def protected fieldDeclaration(VariableDefinition variable) {
 		'''private «variable.typeSpecifier.targetLanguageName» «variable.identifier»;

+ 28 - 25
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/eventdriven/EventDrivenStatemachine.xtend

@@ -27,7 +27,7 @@ class EventDrivenStatemachine extends Statemachine {
 
 		val Set<String> importSet = super.imports(it, entry);	
 		
-		if (hasInternalEvents) {
+		if (hasLocalEvents) {
 			importSet += "java.util.Queue"
 			importSet += "java.util.LinkedList"
 		}
@@ -61,7 +61,7 @@ class EventDrivenStatemachine extends Statemachine {
 		«IF flow.timed»
 			/**
 			* Set the {@link ITimer} for the state machine. It must be set
-			* externally on a timed state machine before a run cycle can be correct
+			* externally on a timed state machine before a run cycle can be correctly
 			* executed.
 			* 
 			* @param timer
@@ -87,11 +87,11 @@ class EventDrivenStatemachine extends Statemachine {
 		«ENDIF»
 	'''
 
-	override protected internalEventFields(ExecutionFlow flow) '''
-		«IF flow.hasInternalEvents»
+	override protected internalEventFields(ExecutionFlow it) '''
+		«IF hasLocalEvents»
 			private Queue<Runnable> internalEventQueue = new LinkedList<Runnable>();
 		«ENDIF»
-		«super.internalEventFields(flow
+		«super.internalEventFields(it
 	'''
 
 	override protected internalEventRaiser(EventDefinition it) '''
@@ -107,33 +107,36 @@ class EventDrivenStatemachine extends Statemachine {
 		}
 	'''
 
-	override protected runCycleFunction(ExecutionFlow flow) '''
-		public void runCycle() {
-			if (!initialized)
-				throw new IllegalStateException(
-						"The state machine needs to be initialized first by calling the init() function.");
-		
-			clearOutEvents();
-			singleCycle();
-			clearEvents();
+	override protected runCycleFunction(ExecutionFlow it) {
+		if(!hasLocalEvents) {
+			return super.runCycleFunction(it)
+		}
+		'''
+			public void runCycle() {
+				if (!initialized)
+					throw new IllegalStateException(
+							"The state machine needs to be initialized first by calling the init() function.");
 			
-			«IF flow.hasInternalEvents»
-			// process queued events
-			while (internalEventQueue.size() > 0) {
-				internalEventQueue.poll().run();
+				clearOutEvents();
+				singleCycle();
 				clearEvents();
+				
+				// process queued events
+				while (internalEventQueue.size() > 0) {
+					internalEventQueue.poll().run();
+					clearEvents();
+				}
 			}
-			«ENDIF»
-		}
-		
-		«flow.singelCycle»
-	'''
+			
+			«it.singleCycle»
+		'''
+	}
 	
-	def protected singelCycle(ExecutionFlow flow) '''
+	def protected singleCycle(ExecutionFlow it) '''
 		protected void singleCycle() {
 			for (nextStateIndex = 0; nextStateIndex < stateVector.length; nextStateIndex++) {
 				switch (stateVector[nextStateIndex]) {
-				«FOR state : flow.states»
+				«FOR state : states»
 					«IF state.reactSequence !== null»
 						case «state.stateName.asEscapedIdentifier»:
 							«state.reactSequence.functionName»();

+ 1 - 1
plugins/org.yakindu.sct.model.stext.ui/.gitignore

@@ -1,3 +1,3 @@
 /bin/
 /target/
-/plugin.xml_gen
+plugin.xml_gen

+ 0 - 346
plugins/org.yakindu.sct.model.stext.ui/plugin.xml_gen

@@ -1,346 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-
-<plugin>
-
-    <extension
-            point="org.eclipse.ui.editors">
-        <editor
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
-            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
-            default="true"
-            extensions="stext"
-            id="org.yakindu.sct.model.stext.SText"
-            name="SText Editor">
-        </editor>
-    </extension>
-    <extension
-        point="org.eclipse.ui.handlers">
-        <handler
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
-            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
-            <activeWhen>
-                <reference
-                    definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
-            commandId="org.yakindu.sct.model.stext.SText.validate">
-         <activeWhen>
-            <reference
-                    definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-            </reference>
-         </activeWhen>
-      	</handler>
-      	<!-- copy qualified name -->
-        <handler
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
-            <activeWhen>
-				<reference definitionId="org.yakindu.sct.model.stext.SText.Editor.opened" />
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
-            <activeWhen>
-            	<and>
-            		<reference definitionId="org.yakindu.sct.model.stext.SText.XtextEditor.opened" />
-	                <iterate>
-						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
-					</iterate>
-				</and>
-            </activeWhen>
-        </handler>
-    </extension>
-    <extension point="org.eclipse.core.expressions.definitions">
-        <definition id="org.yakindu.sct.model.stext.SText.Editor.opened">
-            <and>
-                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.yakindu.sct.model.stext.SText" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-        <definition id="org.yakindu.sct.model.stext.SText.XtextEditor.opened">
-            <and>
-                <reference definitionId="isXtextEditorActive"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.yakindu.sct.model.stext.SText" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-    </extension>
-    <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.yakindu.sct.model.stext.SText"
-            name="SText">
-            <keywordReference id="org.yakindu.sct.model.stext.ui.keyword_SText"/>
-        </page>
-        <page
-            category="org.yakindu.sct.model.stext.SText"
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
-            id="org.yakindu.sct.model.stext.SText.coloring"
-            name="Syntax Coloring">
-            <keywordReference id="org.yakindu.sct.model.stext.ui.keyword_SText"/>
-        </page>
-        <page
-            category="org.yakindu.sct.model.stext.SText"
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
-            id="org.yakindu.sct.model.stext.SText.templates"
-            name="Templates">
-            <keywordReference id="org.yakindu.sct.model.stext.ui.keyword_SText"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.yakindu.sct.model.stext.SText"
-            name="SText">
-            <keywordReference id="org.yakindu.sct.model.stext.ui.keyword_SText"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
-			</enabledWhen>
-	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
-        </page>
-    </extension>
-    <extension
-        point="org.eclipse.ui.keywords">
-        <keyword
-            id="org.yakindu.sct.model.stext.ui.keyword_SText"
-            label="SText"/>
-    </extension>
-    <extension
-         point="org.eclipse.ui.commands">
-      <command
-            description="Trigger expensive validation"
-            id="org.yakindu.sct.model.stext.SText.validate"
-            name="Validate">
-      </command>
-      <!-- copy qualified name -->
-      <command
-            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
-            categoryId="org.eclipse.ui.category.edit"
-            description="Copy the qualified name for the selected element"
-            name="Copy Qualified Name">
-      </command>
-      <command
-            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
-            categoryId="org.eclipse.ui.category.edit"
-            description="Copy the qualified name for the selected element"
-            name="Copy Qualified Name">
-      </command>
-    </extension>
-    <extension point="org.eclipse.ui.menus">
-        <menuContribution
-            locationURI="popup:#TextEditorContext?after=group.edit">
-             <command
-                 commandId="org.yakindu.sct.model.stext.SText.validate"
-                 style="push"
-                 tooltip="Trigger expensive validation">
-            <visibleWhen checkEnabled="false">
-                <reference
-                    definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-                </reference>
-            </visibleWhen>
-         </command>  
-         </menuContribution>
-         <!-- copy qualified name -->
-         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
-         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
-         		style="push" tooltip="Copy Qualified Name">
-            	<visibleWhen checkEnabled="false">
-                	<reference definitionId="org.yakindu.sct.model.stext.SText.Editor.opened" />
-            	</visibleWhen>
-         	</command>  
-         </menuContribution>
-         <menuContribution locationURI="menu:edit?after=copy">
-         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
-            	style="push" tooltip="Copy Qualified Name">
-            	<visibleWhen checkEnabled="false">
-                	<reference definitionId="org.yakindu.sct.model.stext.SText.Editor.opened" />
-            	</visibleWhen>
-         	</command>  
-         </menuContribution>
-         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
-			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
-				style="push" tooltip="Copy Qualified Name">
-         		<visibleWhen checkEnabled="false">
-	            	<and>
-	            		<reference definitionId="org.yakindu.sct.model.stext.SText.XtextEditor.opened" />
-						<iterate>
-							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
-						</iterate>
-					</and>
-				</visibleWhen>
-			</command>
-         </menuContribution>
-    </extension>
-    <extension point="org.eclipse.ui.menus">
-		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
-			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
-				<visibleWhen checkEnabled="false">
-                	<reference definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-                	</reference>
-            	</visibleWhen>
-			</command>
-		</menuContribution>
-	</extension>
-	<extension point="org.eclipse.ui.handlers">
-	    <handler
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
-            commandId="org.eclipse.xtext.ui.editor.FindReferences">
-            <activeWhen>
-                <reference
-                    definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-    </extension>   
-
-<!-- adding resource factories -->
-
-	<extension
-		point="org.eclipse.emf.ecore.extension_parser">
-		<parser
-			class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
-			type="stext">
-		</parser>
-	</extension>
-	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
-        <resourceServiceProvider
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
-            uriExtension="stext">
-        </resourceServiceProvider>
-    </extension>
-
-
-    <!-- marker definitions for org.yakindu.sct.model.stext.SText -->
-    <extension
-            id="stext.check.fast"
-            name="SText Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.fast"/>
-        <persistent value="true"/>
-    </extension>
-    <extension
-            id="stext.check.normal"
-            name="SText Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.normal"/>
-        <persistent value="true"/>
-    </extension>
-    <extension
-            id="stext.check.expensive"
-            name="SText Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.expensive"/>
-        <persistent value="true"/>
-    </extension>
-
-	<!-- Quick Outline -->
-	<extension
-		point="org.eclipse.ui.handlers">
-		<handler 
-			class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
-			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
-			<activeWhen>
-				<reference
-					definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-				</reference>
-			</activeWhen>
-		</handler>
-	</extension>
-	<extension
-		point="org.eclipse.ui.commands">
-		<command
-			description="Open the quick outline."
-			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
-			name="Quick Outline">
-		</command>
-	</extension>
-	<extension point="org.eclipse.ui.menus">
-		<menuContribution
-			locationURI="popup:#TextEditorContext?after=group.open">
-			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
-				style="push"
-				tooltip="Open Quick Outline">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.yakindu.sct.model.stext.SText.Editor.opened"/>
-				</visibleWhen>
-			</command>
-		</menuContribution>
-	</extension>
-    <!-- quickfix marker resolution generator for org.yakindu.sct.model.stext.SText -->
-    <extension
-            point="org.eclipse.ui.ide.markerResolution">
-        <markerResolutionGenerator
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.yakindu.sct.model.stext.ui.stext.check.fast">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.yakindu.sct.model.stext.ui.stext.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.yakindu.sct.model.stext.ui.stext.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-    </extension>
-   	<!-- Rename Refactoring -->
-	<extension point="org.eclipse.ui.handlers">
-		<handler 
-			class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
-			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
-			<activeWhen>
-				<reference
-					definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-				</reference>
-			</activeWhen>
-		</handler>
-	</extension>
-    <extension point="org.eclipse.ui.menus">
-         <menuContribution
-            locationURI="popup:#TextEditorContext?after=group.edit">
-         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
-               style="push">
-            <visibleWhen checkEnabled="false">
-               <reference
-                     definitionId="org.yakindu.sct.model.stext.SText.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-   <extension point="org.eclipse.ui.preferencePages">
-	    <page
-	        category="org.yakindu.sct.model.stext.SText"
-	        class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
-	        id="org.yakindu.sct.model.stext.SText.refactoring"
-	        name="Refactoring">
-	        <keywordReference id="org.yakindu.sct.model.stext.ui.keyword_SText"/>
-	    </page>
-	</extension>
-
-</plugin>

+ 9 - 0
plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/StextPackage.java

@@ -912,6 +912,15 @@ public interface StextPackage extends EPackage {
 	 */
 	int TYPE_ALIAS_DEFINITION__VISIBLE = TypesPackage.TYPE_ALIAS__VISIBLE;
 
+	/**
+	 * The feature id for the '<em><b>Super Types</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_ALIAS_DEFINITION__SUPER_TYPES = TypesPackage.TYPE_ALIAS__SUPER_TYPES;
+
 	/**
 	 * The number of structural features of the '<em>Type Alias Definition</em>' class.
 	 * <!-- begin-user-doc -->

+ 1 - 0
plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java

@@ -8,6 +8,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.yakindu.sct.model.stext.stext.*;
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
 import org.yakindu.sct.model.stext.stext.ArgumentedAnnotation;

+ 1 - 0
plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java

@@ -26,6 +26,7 @@ import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.Trigger;
+import org.yakindu.sct.model.stext.stext.*;
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
 import org.yakindu.sct.model.stext.stext.ArgumentedAnnotation;

+ 1 - 0
plugins/org.yakindu.sct.model.stext/emf-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java

@@ -25,6 +25,7 @@ import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.Trigger;
+import org.yakindu.sct.model.stext.stext.*;
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
 import org.yakindu.sct.model.stext.stext.ArgumentedAnnotation;

+ 19 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/LocalEvents/LocalEvents.sgen

@@ -0,0 +1,19 @@
+GeneratorModel for yakindu::cpp {
+	statechart eventdriven.localEvents {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "LocalEvents"
+		}
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineEnterSequences = false 
+			inlineExitActions = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEntries = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+		}
+	}
+}

+ 64 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/LocalEvents/LocalEventsTest.cc

@@ -0,0 +1,64 @@
+/* Generated by YAKINDU Statechart Tools code generator. */
+#include <string>
+#include "gtest/gtest.h"
+#include "LocalEvents.h"
+#include "sc_runner.h"
+#include "sc_types.h"
+
+namespace  {
+
+
+
+
+//! The timers are managed by a timer service. */
+static SctUnitRunner * runner;
+
+LocalEvents* statechart;
+
+class LocalEventsTest : public ::testing::Test{
+	protected:
+	virtual void SetUp() {
+		statechart = new LocalEvents();
+		statechart->init();
+		runner = new SctUnitRunner(
+			statechart,
+			true,
+			200
+		);
+	}
+	virtual void TearDown() {
+		delete statechart;
+		delete runner;
+	}
+};
+
+
+TEST_F(LocalEventsTest, test) {
+	
+	statechart->enter();
+	
+	EXPECT_TRUE(statechart->isStateActive(LocalEvents::localEvents_r1_Comp1_r_A1));
+	
+	EXPECT_TRUE(statechart->isStateActive(LocalEvents::localEvents_r2_Comp2_r_A2));
+	
+	statechart->getDefaultSCI()->raise_e();
+	
+	EXPECT_TRUE(statechart->isStateActive(LocalEvents::localEvents_r1_Comp1_r_D1));
+	
+	EXPECT_TRUE(statechart->isStateActive(LocalEvents::localEvents_r2_Comp2_r_D2));
+	
+	EXPECT_TRUE(statechart->getDefaultSCI()->get_cycleCountSm()== 5l);
+	
+	EXPECT_TRUE(statechart->getDefaultSCI()->get_cycleCount1()== 5l);
+	
+	EXPECT_TRUE(statechart->getDefaultSCI()->get_cycleCount2()== 5l);
+	
+	EXPECT_TRUE(statechart->getDefaultSCI()->get_checksum()== 3l);
+	
+	statechart->exit();
+	
+	
+}
+
+
+}

+ 19 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/NoLocalEvents/NoLocalEvents.sgen

@@ -0,0 +1,19 @@
+GeneratorModel for yakindu::cpp {
+	statechart NoLocalEvents {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "NoLocalEvents"
+		}
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineEnterSequences = false 
+			inlineExitActions = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEntries = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+		}
+	}
+}

+ 64 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/NoLocalEvents/NoLocalEventsTest.cc

@@ -0,0 +1,64 @@
+/* Generated by YAKINDU Statechart Tools code generator. */
+#include <string>
+#include "gtest/gtest.h"
+#include "NoLocalEvents.h"
+#include "sc_runner.h"
+#include "sc_types.h"
+
+namespace  {
+
+
+
+
+//! The timers are managed by a timer service. */
+static SctUnitRunner * runner;
+
+NoLocalEvents* statechart;
+
+class NoLocalEventsTest : public ::testing::Test{
+	protected:
+	virtual void SetUp() {
+		statechart = new NoLocalEvents();
+		statechart->init();
+		runner = new SctUnitRunner(
+			statechart,
+			true,
+			200
+		);
+	}
+	virtual void TearDown() {
+		delete statechart;
+		delete runner;
+	}
+};
+
+
+TEST_F(NoLocalEventsTest, test) {
+	
+	statechart->enter();
+	
+	EXPECT_TRUE(statechart->isStateActive(NoLocalEvents::main_region_StateA));
+	
+	statechart->getDefaultSCI()->raise_e();
+	
+	EXPECT_TRUE(statechart->isStateActive(NoLocalEvents::main_region_StateB));
+	
+	statechart->getDefaultSCI()->raise_e();
+	
+	EXPECT_TRUE(statechart->isStateActive(NoLocalEvents::main_region_StateA));
+	
+	EXPECT_TRUE((statechart->getDefaultSCI()->get_x()== 0l));
+	
+	statechart->getDefaultSCI()->raise_i( 42l);
+	
+	EXPECT_TRUE(statechart->isStateActive(NoLocalEvents::main_region_StateB));
+	
+	EXPECT_TRUE((statechart->getDefaultSCI()->get_x()== 42l));
+	
+	statechart->exit();
+	
+	
+}
+
+
+}

+ 57 - 1
test-plugins/org.yakindu.sct.generator.cpp.test/model/test.eventdriven.sgen

@@ -90,6 +90,62 @@ GeneratorModel for sctunit::cpp {
 		}
 	}
 		
-
+	test LocalEvents {
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.cpp.test" 
+			targetFolder = "gtests/LocalEvents"
+			libraryTargetFolder = "libraryTarget"			
+		}		
+		
+		feature JUnitWrapper {
+			WrapToJUnit =  true
+		}		
+		
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineExitActions = false
+			inlineEnterSequences = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+			inlineEntries = false
+		}
+		
+		feature SGenModel {
+			GenerateSGen = true
+		}
+	}
+	
+	test NoLocalEvents {
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.cpp.test" 
+			targetFolder = "gtests/NoLocalEvents"
+			libraryTargetFolder = "libraryTarget"			
+		}		
+		
+		feature JUnitWrapper {
+			WrapToJUnit =  true
+		}		
+		
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineExitActions = false
+			inlineEnterSequences = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+			inlineEntries = false
+		}
+		
+		feature SGenModel {
+			GenerateSGen = true
+		}
+	}
 
 }

+ 21 - 70
test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/AllTests.java

@@ -5,75 +5,26 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
-@SuiteClasses({
-	AlwaysOncycleTest.class,
-	AssignmentAsExpressionTest.class,
-	BitExpressionsTest.class,
-	BooleanExpressionsTest.class,
-	CastExpressionsTest.class,
-	ChoiceTest.class,
-	CKeywordsTest.class,
-	ConditionalExpression.class,
-	ConstantsTests.class,
-	ConstOnlyDefaultScopeTest.class,
-	ConstOnlyInternalScopeTest.class,
-	ConstOnlyNamedScopeTest.class,
-	ChildFirstExecutionHierarchyTest.class,
-	ChildFirstLocalReactionsTest.class,
-	DeclarationsTest.class,
-	DeepEntryTest.class,
-	DeepHistoryTest.class,
-	DynamicChoiceTest.class,
-	EmptyTransitionTest.class,
-	EnterStateTest.class,
-	EntryChoiceTest.class,
-	EntryExitSelfTransitionTest.class,
-	EntryReactionActionTest.class,
-	EventDrivenTriggeredByEventTest.class,
-	EventDrivenTriggeredByTimeEventTest.class,
-	ExitOnSelfTransitionTest.class,
-	ExitStateTest.class,
-	FeatureCallsTest.class,
-	FinalStateTest.class,
-	FloatModuloTest.class,
-	GuardTest.class,
-	GuardedEntryTest.class,
-	GuardedExitTest.class,
-	HistoryWithExitPointTest.class,
-	HistoryWithoutInitialStepTest.class,
-	InEventLifeCycleTest.class,
-	IntegerExpressionsTest.class,
-	InternalEventLifeCycleTest.class,
-	LocalReactionsTest.class,
-	LogicalAndTests.class,
-	LogicalOrTests.class,
-	NamedInterfaceAccessTest.class,
-	OperationsTest.class,
-	OutEventLifeCycleTest.class,
-	ParenthesisTest.class,
-	ParentFirstExecutionHierarchyTest.class,
-	ParentFirstLocalReactionsTest.class,
-	PriorityValuesTest.class,
-	RaiseEventTest.class,
-	ReadOnlyVariableTest.class,
-	SameNameDifferentRegionTest.class,
-	ShallowHistoryTest.class,
-	ShallowHistoryWithDeepEntryTest.class,
-	SimpleEventTest.class,
-	SimpleHierachyTest.class,
-	StatechartActiveTest.class,
-	StatechartLocalReactionsTest.class,
-	StateIsActiveTest.class,
-	StaticChoiceTest.class,
-	STextKeywordsInStatesAndRegionsTest.class,
-	StringExpressionsTest.class,
-	SyncForkTest.class,
-	SyncJoinTest.class,
-	TransitionWithoutConditionTest.class,
-	TriggerGuardExpressionsTest.class,
-	TriggerExpressionPrecedenceTest.class,
-	ValuedEventsTest.class,
-	TypeAliasTest.class
-})
+@SuiteClasses({AlwaysOncycleTest.class, AssignmentAsExpressionTest.class, BitExpressionsTest.class,
+		BooleanExpressionsTest.class, CastExpressionsTest.class, ChoiceTest.class, CKeywordsTest.class,
+		ConditionalExpression.class, ConstantsTests.class, ConstOnlyDefaultScopeTest.class,
+		ConstOnlyInternalScopeTest.class, ConstOnlyNamedScopeTest.class, ChildFirstExecutionHierarchyTest.class,
+		ChildFirstLocalReactionsTest.class, DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
+		DynamicChoiceTest.class, EmptyTransitionTest.class, EnterStateTest.class, EntryChoiceTest.class,
+		EntryExitSelfTransitionTest.class, EntryReactionActionTest.class, EventDrivenInternalEventTest.class,
+		EventDrivenTriggeredByEventTest.class, EventDrivenTriggeredByTimeEventTest.class,
+		ExitOnSelfTransitionTest.class, ExitStateTest.class, FeatureCallsTest.class, FinalStateTest.class,
+		FloatModuloTest.class, GuardTest.class, GuardedEntryTest.class, GuardedExitTest.class,
+		HistoryWithExitPointTest.class, HistoryWithoutInitialStepTest.class, InEventLifeCycleTest.class,
+		IntegerExpressionsTest.class, InternalEventLifeCycleTest.class, LocalReactionsTest.class, LogicalAndTests.class,
+		LogicalOrTests.class, LocalEventsTest.class, NamedInterfaceAccessTest.class, NoLocalEventsTest.class, OperationsTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class, ParentFirstExecutionHierarchyTest.class,
+		ParentFirstLocalReactionsTest.class, PriorityValuesTest.class, RaiseEventTest.class, ReadOnlyVariableTest.class,
+		SameNameDifferentRegionTest.class, ShallowHistoryTest.class, ShallowHistoryWithDeepEntryTest.class,
+		SimpleEventTest.class, SimpleHierachyTest.class, StatechartActiveTest.class, StatechartLocalReactionsTest.class,
+		StateIsActiveTest.class, StaticChoiceTest.class, STextKeywordsInStatesAndRegionsTest.class,
+		StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class, TransitionWithoutConditionTest.class,
+		TriggerGuardExpressionsTest.class, TriggerExpressionPrecedenceTest.class, ValuedEventsTest.class,
+		TypeAliasTest.class})
 public class AllTests {
 }

+ 35 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/LocalEventsTest.java

@@ -0,0 +1,35 @@
+/* Generated by YAKINDU Statechart Tools code generator. */
+package org.yakindu.sct.generator.cpp.test;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.generator.c.gtest.GTest;
+import org.yakindu.sct.generator.c.gtest.GTestRunner;
+import org.yakindu.sct.generator.c.gtest.GTestHelper;
+import org.yakindu.sct.generator.c.gtest.GTestHelper.Compiler;
+
+@GTest(
+	statechartBundle = "org.yakindu.sct.test.models",
+	sourceFile = "gtests/LocalEvents/LocalEventsTest.cc",
+	program = "gtests/LocalEvents/LocalEvents",
+	model = "testmodels/SCTUnit/eventdriven/LocalEvents.sct",
+	additionalFilesToCopy = {
+		"libraryTarget/sc_runner.h",
+		"libraryTarget/sc_runner.cpp"
+	},
+	additionalFilesToCompile = {
+		"LocalEvents.cpp",
+		"sc_runner.cpp"
+	}
+)
+@RunWith(GTestRunner.class)
+public class LocalEventsTest {
+protected final GTestHelper helper = new GTestHelper(this, Compiler.GPLUSPLUS);
+
+	@Before
+	public void setUp() {
+		helper.generate();
+		helper.compile();
+	}
+
+}

+ 35 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/NoLocalEventsTest.java

@@ -0,0 +1,35 @@
+/* Generated by YAKINDU Statechart Tools code generator. */
+package org.yakindu.sct.generator.cpp.test;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.generator.c.gtest.GTest;
+import org.yakindu.sct.generator.c.gtest.GTestRunner;
+import org.yakindu.sct.generator.c.gtest.GTestHelper;
+import org.yakindu.sct.generator.c.gtest.GTestHelper.Compiler;
+
+@GTest(
+	statechartBundle = "org.yakindu.sct.test.models",
+	sourceFile = "gtests/NoLocalEvents/NoLocalEventsTest.cc",
+	program = "gtests/NoLocalEvents/NoLocalEvents",
+	model = "testmodels/SCTUnit/eventdriven/NoLocalEvents.sct",
+	additionalFilesToCopy = {
+		"libraryTarget/sc_runner.h",
+		"libraryTarget/sc_runner.cpp"
+	},
+	additionalFilesToCompile = {
+		"NoLocalEvents.cpp",
+		"sc_runner.cpp"
+	}
+)
+@RunWith(GTestRunner.class)
+public class NoLocalEventsTest {
+protected final GTestHelper helper = new GTestHelper(this, Compiler.GPLUSPLUS);
+
+	@Before
+	public void setUp() {
+		helper.generate();
+		helper.compile();
+	}
+
+}