Browse Source

performace improvements, also some timing issues resolved

Simon Van Mierlo 9 years ago
parent
commit
1075ee73db
88 changed files with 432 additions and 871 deletions
  1. 9 37
      examples/bouncingballs/js/target_js/target.js
  2. 1 1
      examples/bouncingballs/python/runner_performance.py
  3. 1 1
      examples/bouncingballs/python/runner_performance_threads.py
  4. 1 1
      examples/bouncingballs/python/sccd.xml
  5. 1 1
      examples/bouncingballs/python/sccd_performance.xml
  6. 1 1
      examples/bouncingballs/python/sccd_performance_threads.xml
  7. 10 22
      examples/bouncingballs/python/target_py/target.py
  8. 8 17
      examples/bouncingballs/python/target_py/target_performance.py
  9. 6 12
      examples/bouncingballs/python/target_py/target_performance_threads.py
  10. 6 27
      src/python_sccd/python_sccd_compiler/generic_generator.py
  11. 33 24
      src/python_sccd/python_sccd_runtime/statecharts_core.py
  12. 1 1
      test/src/original_semantics/after_0.xml
  13. 3 10
      test/target_js/big_step_maximality/00_take_one.js
  14. 3 10
      test/target_js/big_step_maximality/01_take_many.js
  15. 3 10
      test/target_js/big_step_maximality/10_orthogonal_take_one.js
  16. 3 10
      test/target_js/big_step_maximality/11_orthogonal_take_many.js
  17. 3 10
      test/target_js/event_lifeline/00_take_one_next_small_step.js
  18. 3 10
      test/target_js/event_lifeline/02_take_one_queue.js
  19. 3 10
      test/target_js/event_lifeline/10_take_many_next_small_step.js
  20. 3 10
      test/target_js/event_lifeline/11_take_many_next_combo_step.js
  21. 3 10
      test/target_js/event_lifeline/12_take_many_queue.js
  22. 3 10
      test/target_js/event_lifeline/20_orthogonal_take_one_next_small_step.js
  23. 3 10
      test/target_js/event_lifeline/21_orthogonal_take_one_queue.js
  24. 3 10
      test/target_js/event_lifeline/30_orthogonal_take_many_next_small_step.js
  25. 3 10
      test/target_js/event_lifeline/31_orthogonal_take_many_next_combo_step.js
  26. 3 10
      test/target_js/event_lifeline/32_orthogonal_take_many_queue.js
  27. 3 10
      test/target_js/no_statechart/00_no_statechart_js.js
  28. 3 10
      test/target_js/original_semantics/after.js
  29. 5 19
      test/target_js/original_semantics/after_0.js
  30. 5 19
      test/target_js/original_semantics/associate_event.js
  31. 3 10
      test/target_js/original_semantics/correct_duplicate_state_id.js
  32. 3 10
      test/target_js/original_semantics/enter_exit_hierarchy.js
  33. 3 10
      test/target_js/original_semantics/guard.js
  34. 3 10
      test/target_js/original_semantics/history.js
  35. 3 10
      test/target_js/original_semantics/history_deep.js
  36. 3 10
      test/target_js/original_semantics/history_parallel_deep.js
  37. 3 10
      test/target_js/original_semantics/inner_first.js
  38. 3 10
      test/target_js/original_semantics/instate.js
  39. 3 10
      test/target_js/original_semantics/multiple_target.js
  40. 5 19
      test/target_js/original_semantics/object_manager.js
  41. 3 10
      test/target_js/original_semantics/outer_first.js
  42. 3 10
      test/target_js/original_semantics/parallel.js
  43. 3 10
      test/target_js/original_semantics/parallel_history.js
  44. 3 10
      test/target_js/original_semantics/parallel_history_2.js
  45. 3 10
      test/target_js/original_semantics/parallel_history_3.js
  46. 3 10
      test/target_js/priority/00_source_parent.js
  47. 3 10
      test/target_js/priority/01_source_child.js
  48. 3 10
      test/target_js/priority/10_source_parent_history.js
  49. 3 10
      test/target_js/priority/11_source_child_history.js
  50. 3 10
      test/target_js/timing/00_rapid_js.js
  51. 6 8
      test/target_py/big_step_maximality/00_take_one.py
  52. 6 8
      test/target_py/big_step_maximality/01_take_many.py
  53. 6 8
      test/target_py/big_step_maximality/10_orthogonal_take_one.py
  54. 6 8
      test/target_py/big_step_maximality/11_orthogonal_take_many.py
  55. 6 8
      test/target_py/event_lifeline/00_take_one_next_small_step.py
  56. 6 8
      test/target_py/event_lifeline/02_take_one_queue.py
  57. 6 8
      test/target_py/event_lifeline/10_take_many_next_small_step.py
  58. 6 8
      test/target_py/event_lifeline/11_take_many_next_combo_step.py
  59. 6 8
      test/target_py/event_lifeline/12_take_many_queue.py
  60. 6 8
      test/target_py/event_lifeline/20_orthogonal_take_one_next_small_step.py
  61. 6 8
      test/target_py/event_lifeline/21_orthogonal_take_one_queue.py
  62. 6 8
      test/target_py/event_lifeline/30_orthogonal_take_many_next_small_step.py
  63. 6 8
      test/target_py/event_lifeline/31_orthogonal_take_many_next_combo_step.py
  64. 6 8
      test/target_py/event_lifeline/32_orthogonal_take_many_queue.py
  65. 6 8
      test/target_py/no_statechart/00_no_statechart_py.py
  66. 6 8
      test/target_py/original_semantics/after.py
  67. 8 13
      test/target_py/original_semantics/after_0.py
  68. 8 13
      test/target_py/original_semantics/associate_event.py
  69. 6 8
      test/target_py/original_semantics/correct_duplicate_state_id.py
  70. 6 8
      test/target_py/original_semantics/enter_exit_hierarchy.py
  71. 6 8
      test/target_py/original_semantics/guard.py
  72. 6 8
      test/target_py/original_semantics/history.py
  73. 6 8
      test/target_py/original_semantics/history_deep.py
  74. 6 8
      test/target_py/original_semantics/history_parallel_deep.py
  75. 6 8
      test/target_py/original_semantics/inner_first.py
  76. 6 8
      test/target_py/original_semantics/instate.py
  77. 6 8
      test/target_py/original_semantics/multiple_target.py
  78. 8 13
      test/target_py/original_semantics/object_manager.py
  79. 6 8
      test/target_py/original_semantics/outer_first.py
  80. 6 8
      test/target_py/original_semantics/parallel.py
  81. 6 8
      test/target_py/original_semantics/parallel_history.py
  82. 6 8
      test/target_py/original_semantics/parallel_history_2.py
  83. 6 8
      test/target_py/original_semantics/parallel_history_3.py
  84. 6 8
      test/target_py/priority/00_source_parent.py
  85. 6 8
      test/target_py/priority/01_source_child.py
  86. 6 8
      test/target_py/priority/10_source_parent_history.py
  87. 6 8
      test/target_py/priority/11_source_child_history.py
  88. 6 8
      test/target_py/timing/00_rapid_py.py

+ 9 - 37
examples/bouncingballs/js/target_js/target.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Fri Aug 05 16:11:47 2016
+Date:   Mon Aug 08 16:30:17 2016
 
 Model author: Joeri Exelmans+Raphael Mannadiar+Simon Van Mierlo
 Model name:   Bouncing_Balls_JavaScript_Version
@@ -185,15 +185,8 @@ MainApp.prototype._running_root_cd_behaviour_check_nr_of_fields_1_guard = functi
 
 MainApp.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/running"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/running"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'MainApp' to package 'Bouncing_Balls_JavaScript_Version'
@@ -450,15 +443,8 @@ Field.prototype._root_deleting_0_exec = function(parameters) {
 
 Field.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/root"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/root"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Field' to package 'Bouncing_Balls_JavaScript_Version'
@@ -550,15 +536,8 @@ Button.prototype._running_0_guard = function(parameters) {
 
 Button.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/initializing"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/initializing"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Button' to package 'Bouncing_Balls_JavaScript_Version'
@@ -773,15 +752,8 @@ Ball.prototype._main_behaviour_selected_1_exec = function(parameters) {
 
 Ball.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/main_behaviour"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/main_behaviour"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Ball' to package 'Bouncing_Balls_JavaScript_Version'

+ 1 - 1
examples/bouncingballs/python/runner_performance.py

@@ -14,7 +14,7 @@ if __name__ == '__main__':
     ui.window = tk.Tk()
     ui.window.withdraw()
     def callback(ctrl, behind_schedule):
-        if behind_schedule > 500:
+        if behind_schedule > 2000:
             print len(ctrl.object_manager.instances)
             ctrl.stop()
             ui.window.destroy()

+ 1 - 1
examples/bouncingballs/python/runner_performance_threads.py

@@ -11,7 +11,7 @@ from sccd.runtime.statecharts_core import Event
 
 if __name__ == '__main__':
     def callback(ctrl, behind_schedule):
-        if behind_schedule > 500:
+        if behind_schedule > 2000:
             print len(ctrl.object_manager.instances)
             ctrl.stop()
             sys.exit()

+ 1 - 1
examples/bouncingballs/python/sccd.xml

@@ -313,7 +313,7 @@
                     </transition>
                 </state>
                 <state id="bouncing">
-                    <transition after="0.05" target=".">
+                    <transition after="(20 - self.getSimulatedTime() % 20) / 1000.0" target=".">
                         <script>
                             <![CDATA[
                             pos = self.element.get_position();    

+ 1 - 1
examples/bouncingballs/python/sccd_performance.xml

@@ -333,7 +333,7 @@
                     </transition>
                 </state>
                 <state id="bouncing">
-                    <transition after="(1000 - self.getSimulatedTime() % 1000) / 1000.0" target=".">
+                    <transition after="(20 - self.getSimulatedTime() % 20) / 1000.0" target=".">
                         <script>
                             <![CDATA[
                             pos = self.element.get_position();    

+ 1 - 1
examples/bouncingballs/python/sccd_performance_threads.xml

@@ -123,7 +123,7 @@
         <scxml initial="main_behaviour">
             <state id="main_behaviour" initial="bouncing">
                 <state id="bouncing">
-                    <transition after="(1000 - self.getSimulatedTime() % 1000) / 1000.0" target=".">
+                    <transition after="(20 - self.getSimulatedTime() % 20) / 1000.0" target=".">
                         <script>
                             <![CDATA[
                             self.pos

+ 10 - 22
examples/bouncingballs/python/target_py/target.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Fri Aug 05 16:11:47 2016
+Date:   Tue Aug 09 09:51:00 2016
 
 Model author: Simon Van Mierlo+Raphael Mannadiar
 Model name:   Bouncing_Balls_Python_Version
@@ -176,11 +176,8 @@ class MainApp(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/running"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/running"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Field(RuntimeClassBase):
     def __init__(self, controller):
@@ -412,11 +409,8 @@ class Field(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/root"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/root"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Button(RuntimeClassBase):
     def __init__(self, controller, parent, event_name, button_text):
@@ -492,11 +486,8 @@ class Button(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/initializing"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/initializing"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Ball(RuntimeClassBase):
     def __init__(self, controller, canvas, x, y):
@@ -611,7 +602,7 @@ class Ball(RuntimeClassBase):
         self.states["/main_behaviour/selected"].addTransition(_main_behaviour_selected_1)
     
     def _main_behaviour_bouncing_enter(self):
-        self.addTimer(0, 0.05)
+        self.addTimer(0, (20 - self.getSimulatedTime() % 20) / 1000.0)
     
     def _main_behaviour_bouncing_exit(self):
         self.removeTimer(0)
@@ -688,11 +679,8 @@ class Ball(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/main_behaviour"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/main_behaviour"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):

+ 8 - 17
examples/bouncingballs/python/target_py/target_performance.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Fri Aug 05 16:11:48 2016
+Date:   Tue Aug 09 09:51:00 2016
 
 Model author: Simon Van Mierlo+Raphael Mannadiar
 Model name:   Bouncing_Balls_Python_Version
@@ -206,11 +206,8 @@ class MainApp(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/running"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/running"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Field(RuntimeClassBase):
     def __init__(self, controller):
@@ -468,11 +465,8 @@ class Field(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/root"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/root"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Button(RuntimeClassBase):
     def __init__(self, controller, parent, event_name, button_text):
@@ -548,11 +542,8 @@ class Button(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/initializing"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/initializing"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Ball(RuntimeClassBase):
     def __init__(self, controller, canvas, x, y):
@@ -667,7 +658,7 @@ class Ball(RuntimeClassBase):
         self.states["/main_behaviour/selected"].addTransition(_main_behaviour_selected_1)
     
     def _main_behaviour_bouncing_enter(self):
-        self.addTimer(0, (1000 - self.getSimulatedTime() % 1000) / 1000.0)
+        self.addTimer(0, (20 - self.getSimulatedTime() % 20) / 1000.0)
     
     def _main_behaviour_bouncing_exit(self):
         self.removeTimer(0)

+ 6 - 12
examples/bouncingballs/python/target_py/target_performance_threads.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 14:51:59 2016
+Date:   Tue Aug 09 10:51:10 2016
 
 Model author: Simon Van Mierlo+Raphael Mannadiar
 Model name:   Bouncing_Balls_Python_Version
@@ -248,11 +248,8 @@ class Field(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/root"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/root"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Ball(RuntimeClassBase):
     def __init__(self, controller, x, y):
@@ -309,7 +306,7 @@ class Ball(RuntimeClassBase):
         self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_0)
     
     def _main_behaviour_bouncing_enter(self):
-        self.addTimer(0, (1000 - self.getSimulatedTime() % 1000) / 1000.0)
+        self.addTimer(0, (20 - self.getSimulatedTime() % 20) / 1000.0)
     
     def _main_behaviour_bouncing_exit(self):
         self.removeTimer(0)
@@ -325,11 +322,8 @@ class Ball(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/main_behaviour"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/main_behaviour"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):

+ 6 - 27
src/python_sccd/python_sccd_compiler/generic_generator.py

@@ -248,7 +248,7 @@ class GenericGenerator(Visitor):
             
             # get effective target of initial transition
             self.writer.addAssignment(
-                GLC.LocalVariableDeclaration("states"),
+                GLC.SelfProperty("default_targets"),
                 GLC.FunctionCall(
                     GLC.Property(
                         GLC.MapIndexedExpression(
@@ -260,32 +260,11 @@ class GenericGenerator(Visitor):
                 )
             )
             
-            # update state configuration
-            self.writer.add(
-                GLC.FunctionCall(
-                    GLC.SelfProperty("updateConfiguration"),
-                    ["states"]
-                )
-            )
-            
-            # call enter action of states to enter, if present
-            self.writer.beginForLoopIterateArray("states", "state")
-            self.writer.beginElseIf(
-                GLC.Property(
-                    "state",
-                    "enter"
-                )
-            )
-            self.writer.add(
-                GLC.FunctionCall(
-                    GLC.Property(
-                        "state",
-                        "enter"
-                    )
-                )
-            )
-            self.writer.endElseIf()
-            self.writer.endForLoopIterateArray()
+            self.writer.add(GLC.SuperClassMethodCall(
+                "RuntimeClassBase",
+                "initializeStatechart",
+                []
+            ))
             
             self.writer.endMethodBody()
             self.writer.endMethod()

+ 33 - 24
src/python_sccd/python_sccd_runtime/statecharts_core.py

@@ -4,8 +4,9 @@ import threading
 import traceback
 import math
 import cPickle
+from heapq import heappush, heappop
 from infinity import INFINITY
-from Queue import Queue, Empty
+from Queue import Queue, Empty 
 
 from sccd.runtime.event_queue import EventQueue
 from sccd.runtime.accurate_time import time, set_start_time
@@ -37,8 +38,7 @@ class Association(object):
         self.instances = {} # maps index (as string) to instance
         self.instances_to_ids = {}
         self.size = 0
-        self.next_id = 0
-        
+        self.next_id = 0        
 
     def allowedToAdd(self):
         return self.max_card == -1 or self.size < self.max_card
@@ -79,6 +79,8 @@ class ObjectManagerBase(object):
         self.controller = controller
         self.events = EventQueue()
         self.instances = set() # a set of RuntimeClassBase instances
+        self.instance_times = []
+        self.eventless = set()
         
     def addEvent(self, event, time_offset = 0):
         self.events.add((self.controller.simulated_time + time_offset, event))
@@ -89,29 +91,28 @@ class ObjectManagerBase(object):
             i.addEvent(new_event, time_offset)
         
     def getEarliestEventTime(self):
-        earliest_time = self.events.getEarliestTime()
-        if self.instances:
-            for i in self.instances:
-                if i.earliest_event_time < earliest_time:
-                    earliest_time = i.earliest_event_time
-        return earliest_time
+        return min(self.instance_times[0][0], self.events.getEarliestTime())
     
     def stepAll(self):
         self.step()
         simulated_time = self.controller.simulated_time
-        for i in self.instances:
+        to_step = set()
+        while self.instance_times[0][0] <= simulated_time:
+            to_step.add(heappop(self.instance_times)[1])
+        # print simulated_time, len(self.instances), len(to_step | self.eventless)
+        for i in to_step | self.eventless:
             if i.active and (i.earliest_event_time <= simulated_time or i.eventless_states):
                 i.step()
 
     def step(self):
-        while self.events.getEarliestTime() <= time():
+        while self.events.getEarliestTime() <= self.controller.simulated_time:
             self.handleEvent(self.events.pop())
                
     def start(self):
         for i in self.instances:
             i.start()          
                
-    def handleEvent(self, e):   
+    def handleEvent(self, e):
         if e.getName() == "narrow_cast" :
             self.handleNarrowCastEvent(e.getParameters())            
         elif e.getName() == "broad_cast" :
@@ -201,9 +202,8 @@ class ObjectManagerBase(object):
                     self.instances.discard(i["instance"])
                 except AssociationException as exception:
                     raise RuntimeException("Error removing instance from association '" + association_name + "': " + str(exception))
-                i["instance"].stop()
-                # if hasattr(i.instance, 'user_defined_destructor'):
                 i["instance"].user_defined_destructor()
+                i["instance"].stop()
             source.addEvent(Event("instance_deleted", parameters = [parameters[1]]))
                 
     def handleAssociateEvent(self, parameters):
@@ -749,6 +749,11 @@ class Transition:
             # execute enter action(s)
             if s.enter:
                 s.enter()
+        
+        if self.obj.eventless_states:
+            self.obj.controller.object_manager.eventless.add(self.obj)
+        else:
+            self.obj.controller.object_manager.eventless.discard(self.obj)
                 
         self.obj.configuration.sort(key=lambda x: x.state_id)
         self.enabled_event = None
@@ -806,11 +811,12 @@ class RuntimeClassBase(object):
     __metaclass__  = abc.ABCMeta
     
     def __init__(self, controller):
-        self.active = False
-        self.__set_stable(True)
         self.events = EventQueue()
+        
+        self.active = False
 
         self.controller = controller
+        self.__set_stable(True)
         self.inports = {}
         self.timers = {}
         self.states = {}
@@ -821,6 +827,8 @@ class RuntimeClassBase(object):
     def start(self):
         self.configuration = []
         
+        self.active = True
+        
         self.current_state = {}
         self.history_values = {}
         self.timers = {}
@@ -830,22 +838,21 @@ class RuntimeClassBase(object):
         self.combo_step = ComboStepState()
         self.small_step = SmallStepState()
 
-        self.active = True
         self.__set_stable(False)
 
         self.initializeStatechart()
         self.processBigStepOutput()
         
+    def stop(self):
+        self.active = False
+        self.__set_stable(True)
+        
     def getSimulatedTime(self):
         return self.controller.simulated_time
     
     def updateConfiguration(self, states):
         self.configuration.extend(states)
     
-    def stop(self):
-        self.active = False
-        self.__set_stable(True)
-    
     def addTimer(self, index, timeout):
         self.timers_to_add[index] = (self.controller.simulated_time + int(timeout * 1000), Event("_%iafter" % index))
     
@@ -858,6 +865,7 @@ class RuntimeClassBase(object):
         
     def addEvent(self, event_list, time_offset = 0):
         event_time = self.controller.simulated_time + time_offset
+        heappush(self.controller.object_manager.instance_times, (event_time, self))
         if event_time < self.earliest_event_time:
             self.earliest_event_time = event_time
         if not isinstance(event_list, list):
@@ -876,10 +884,9 @@ class RuntimeClassBase(object):
         # self.earliest_event_time keeps track of the earliest time this instance will execute a transition
         if not is_stable:
             self.earliest_event_time = 0
-        elif not self.active:
-            self.earliest_event_time = INFINITY
         else:
             self.earliest_event_time = self.events.getEarliestTime()
+        heappush(self.controller.object_manager.instance_times, (self.earliest_event_time, self))
 
     def step(self):        
         is_stable = False
@@ -981,7 +988,7 @@ class RuntimeClassBase(object):
         elif self.semantics.internal_event_lifeline == StatechartSemantics.NextComboStep:
             self.combo_step.addNextEvent(event)
         elif self.semantics.internal_event_lifeline == StatechartSemantics.Queue:
-            self.events.add((time(), event))
+            self.addEvent(event)
 
     def initializeStatechart(self):
         self.updateConfiguration(self.default_targets)
@@ -989,6 +996,8 @@ class RuntimeClassBase(object):
             self.eventless_states += state.has_eventless_transitions
             if state.enter:
                 state.enter()
+        if self.eventless_states:
+            self.controller.object_manager.eventless.add(self)
         
 
 class BigStepState(object):

+ 1 - 1
test/src/original_semantics/after_0.xml

@@ -39,7 +39,7 @@
                 </transition>
 
             </state>
-            <state id="done"/>
+            <state id="done" />
         </scxml>
     </class>
 

+ 3 - 10
test/target_js/big_step_maximality/00_take_one.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:16 2016
+Date:   Tue Aug 09 09:35:50 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_one
@@ -92,15 +92,8 @@ c.prototype._c_enter = function() {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_one'

+ 3 - 10
test/target_js/big_step_maximality/01_take_many.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:16 2016
+Date:   Tue Aug 09 09:35:50 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many
@@ -92,15 +92,8 @@ c.prototype._c_enter = function() {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_many'

+ 3 - 10
test/target_js/big_step_maximality/10_orthogonal_take_one.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:16 2016
+Date:   Tue Aug 09 09:35:50 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_one
@@ -143,15 +143,8 @@ c.prototype._p_o1_sf_enter = function() {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_one'

+ 3 - 10
test/target_js/big_step_maximality/11_orthogonal_take_many.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:50 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many
@@ -143,15 +143,8 @@ c.prototype._p_o1_sf_enter = function() {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_many'

+ 3 - 10
test/target_js/event_lifeline/00_take_one_next_small_step.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_one_next_small_step
@@ -97,15 +97,8 @@ c.prototype._a_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_one_next_small_step'

+ 3 - 10
test/target_js/event_lifeline/02_take_one_queue.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_one_queue
@@ -97,15 +97,8 @@ c.prototype._a_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_one_queue'

+ 3 - 10
test/target_js/event_lifeline/10_take_many_next_small_step.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many_next_small_step
@@ -97,15 +97,8 @@ c.prototype._a_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_many_next_small_step'

+ 3 - 10
test/target_js/event_lifeline/11_take_many_next_combo_step.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many_next_combo_step
@@ -97,15 +97,8 @@ c.prototype._a_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_many_next_combo_step'

+ 3 - 10
test/target_js/event_lifeline/12_take_many_queue.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many_queue
@@ -97,15 +97,8 @@ c.prototype._a_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'take_many_queue'

+ 3 - 10
test/target_js/event_lifeline/20_orthogonal_take_one_next_small_step.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_one_next_small_step
@@ -146,15 +146,8 @@ c.prototype._p_o1_sc_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_one_next_small_step'

+ 3 - 10
test/target_js/event_lifeline/21_orthogonal_take_one_queue.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_one_queue
@@ -144,15 +144,8 @@ c.prototype._p_o1_sc_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_one_queue'

+ 3 - 10
test/target_js/event_lifeline/30_orthogonal_take_many_next_small_step.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:17 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many_next_small_step
@@ -148,15 +148,8 @@ c.prototype._p_o1_sc_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_many_next_small_step'

+ 3 - 10
test/target_js/event_lifeline/31_orthogonal_take_many_next_combo_step.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:51 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many_next_combo_step
@@ -143,15 +143,8 @@ c.prototype._p_o1_sc_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_many_next_combo_step'

+ 3 - 10
test/target_js/event_lifeline/32_orthogonal_take_many_queue.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many_queue
@@ -144,15 +144,8 @@ c.prototype._p_o1_sc_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/p"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/p"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'orthogonal_take_many_queue'

+ 3 - 10
test/target_js/no_statechart/00_no_statechart_js.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   no_statechart
@@ -137,15 +137,8 @@ my_class.prototype._b_0_guard = function(parameters) {
 
 my_class.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'my_class' to package 'no_statechart'

+ 3 - 10
test/target_js/original_semantics/after.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestAfter
@@ -102,15 +102,8 @@ Class1.prototype._composite_state_3_enter = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/composite"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/composite"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestAfter'

+ 5 - 19
test/target_js/original_semantics/after_0.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Yentl Van Tendeloo
 Model name:   after_0
@@ -95,15 +95,8 @@ A.prototype._ready_0_exec = function(parameters) {
 
 A.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/x"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/x"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'A' to package 'after_0'
@@ -177,15 +170,8 @@ B.prototype._z_0_exec = function(parameters) {
 
 B.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/z"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/z"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'B' to package 'after_0'

+ 5 - 19
test/target_js/original_semantics/associate_event.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestAssociateEvent
@@ -88,15 +88,8 @@ Class1.prototype._wait_0_exec = function(parameters) {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/start"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/start"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestAssociateEvent'
@@ -159,15 +152,8 @@ Class2.prototype._start_0_exec = function(parameters) {
 
 Class2.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/start"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/start"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class2' to package 'TestAssociateEvent'

+ 3 - 10
test/target_js/original_semantics/correct_duplicate_state_id.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestCorrectDuplicateStateId
@@ -81,15 +81,8 @@ Class1.prototype.build_statechart_structure = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/state1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/state1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestCorrectDuplicateStateId'

+ 3 - 10
test/target_js/original_semantics/enter_exit_hierarchy.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:18 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestEnterExitHierarchy
@@ -171,15 +171,8 @@ Class1.prototype._composite_state2_inner4_exit = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/outside"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/outside"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestEnterExitHierarchy'

+ 3 - 10
test/target_js/original_semantics/guard.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:52 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestGuard
@@ -103,15 +103,8 @@ Class1.prototype._state_2_1_guard = function(parameters) {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/state_1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/state_1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestGuard'

+ 3 - 10
test/target_js/original_semantics/history.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestHistory
@@ -106,15 +106,8 @@ Class1.prototype._state_3_enter = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/composite_1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/composite_1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestHistory'

+ 3 - 10
test/target_js/original_semantics/history_deep.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestHistoryDeep
@@ -206,15 +206,8 @@ Class1.prototype._parallel_orthogonal_tester_step3_0_guard = function(parameters
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestHistoryDeep'

+ 3 - 10
test/target_js/original_semantics/history_parallel_deep.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestHistoryParallelDeep
@@ -205,15 +205,8 @@ Class1.prototype._parallel_orthogonal_tester_step3_0_guard = function(parameters
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestHistoryParallelDeep'

+ 3 - 10
test/target_js/original_semantics/inner_first.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestInnerFirst
@@ -92,15 +92,8 @@ Class1.prototype._stateb_enter = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/state1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/state1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestInnerFirst'

+ 3 - 10
test/target_js/original_semantics/instate.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestInstate
@@ -147,15 +147,8 @@ Class1.prototype._parallel_1_orthogonal2_tester_2_guard = function(parameters) {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel_1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel_1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestInstate'

+ 3 - 10
test/target_js/original_semantics/multiple_target.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestMultipleTarget
@@ -119,15 +119,8 @@ Class1.prototype._next_to_parallel_enter = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/next_to_parallel"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/next_to_parallel"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestMultipleTarget'

+ 5 - 19
test/target_js/original_semantics/object_manager.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:19 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestObjectManager
@@ -87,15 +87,8 @@ Class1.prototype._wait_0_exec = function(parameters) {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/start"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/start"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestObjectManager'
@@ -158,15 +151,8 @@ Class2.prototype._start_0_exec = function(parameters) {
 
 Class2.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/start"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/start"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class2' to package 'TestObjectManager'

+ 3 - 10
test/target_js/original_semantics/outer_first.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestOuterFirst
@@ -92,15 +92,8 @@ Class1.prototype._stateb_enter = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/state1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/state1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestOuterFirst'

+ 3 - 10
test/target_js/original_semantics/parallel.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:53 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallel
@@ -125,15 +125,8 @@ Class1.prototype._parallel_1_orthogonal_2_state_4_enter = function() {
 
 Class1.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel_1"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel_1"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'Class1' to package 'TestParallel'

+ 3 - 10
test/target_js/original_semantics/parallel_history.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallelHistory
@@ -171,15 +171,8 @@ TestClass.prototype._parallel_orthogonal_2_outer_2_enter = function() {
 
 TestClass.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'TestClass' to package 'TestParallelHistory'

+ 3 - 10
test/target_js/original_semantics/parallel_history_2.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallelHistory2
@@ -176,15 +176,8 @@ TestClass.prototype._next_to_parallel_enter = function() {
 
 TestClass.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'TestClass' to package 'TestParallelHistory2'

+ 3 - 10
test/target_js/original_semantics/parallel_history_3.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallelHistory2
@@ -176,15 +176,8 @@ TestClass.prototype._next_to_parallel_enter = function() {
 
 TestClass.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parallel"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parallel"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'TestClass' to package 'TestParallelHistory2'

+ 3 - 10
test/target_js/priority/00_source_parent.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_parent
@@ -102,15 +102,8 @@ c.prototype._c_enter = function() {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parent"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parent"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'source_parent'

+ 3 - 10
test/target_js/priority/01_source_child.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_child
@@ -102,15 +102,8 @@ c.prototype._c_enter = function() {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/parent"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/parent"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'source_child'

+ 3 - 10
test/target_js/priority/10_source_parent_history.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:20 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_parent_history
@@ -91,15 +91,8 @@ c.prototype._main_A_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/main"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/main"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'source_parent_history'

+ 3 - 10
test/target_js/priority/11_source_child_history.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_child_history
@@ -91,15 +91,8 @@ c.prototype._main_A_0_exec = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/main"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/main"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'source_child_history'

+ 3 - 10
test/target_js/timing/00_rapid_js.js

@@ -1,6 +1,6 @@
 /* Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:54 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   rapid
@@ -89,15 +89,8 @@ c.prototype._a_0_guard = function(parameters) {
 
 c.prototype.initializeStatechart = function() {
     // enter default state
-    var states = this.states["/a"].getEffectiveTargetStates();
-    this.updateConfiguration(states);
-    for (var state_idx in states) {
-        if (!states.hasOwnProperty(state_idx)) continue;
-        var state = states[state_idx]
-        if (state.enter) {
-            state.enter();
-        }
-    }
+    this.default_targets = this.states["/a"].getEffectiveTargetStates();
+    RuntimeClassBase.prototype.initializeStatechart.call(this);
 };
 
 // add symbol 'c' to package 'rapid'

+ 6 - 8
test/target_py/big_step_maximality/00_take_one.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_one
@@ -82,11 +82,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -101,9 +98,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/big_step_maximality/01_take_many.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many
@@ -82,11 +82,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -101,9 +98,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/big_step_maximality/10_orthogonal_take_one.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_one
@@ -130,11 +130,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -149,9 +146,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/big_step_maximality/11_orthogonal_take_many.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many
@@ -130,11 +130,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -149,9 +146,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/00_take_one_next_small_step.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:21 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_one_next_small_step
@@ -86,11 +86,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -105,9 +102,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/02_take_one_queue.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:22 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_one_queue
@@ -86,11 +86,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -105,9 +102,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/10_take_many_next_small_step.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:22 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many_next_small_step
@@ -86,11 +86,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -105,9 +102,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/11_take_many_next_combo_step.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many_next_combo_step
@@ -86,11 +86,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -105,9 +102,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/12_take_many_queue.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:55 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   take_many_queue
@@ -86,11 +86,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -105,9 +102,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/20_orthogonal_take_one_next_small_step.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_one_next_small_step
@@ -132,11 +132,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -151,9 +148,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/21_orthogonal_take_one_queue.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_one_queue
@@ -130,11 +130,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -149,9 +146,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/30_orthogonal_take_many_next_small_step.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many_next_small_step
@@ -134,11 +134,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -153,9 +150,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/31_orthogonal_take_many_next_combo_step.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many_next_combo_step
@@ -129,11 +129,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -148,9 +145,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/event_lifeline/32_orthogonal_take_many_queue.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:23 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   orthogonal_take_many_queue
@@ -130,11 +130,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/p"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/p"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -149,9 +146,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/no_statechart/00_no_statechart_py.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   no_statechart
@@ -117,11 +117,8 @@ class my_class(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -139,9 +136,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("my_class", [])

+ 6 - 8
test/target_py/original_semantics/after.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestAfter
@@ -91,11 +91,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/composite"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/composite"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -110,9 +107,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 8 - 13
test/target_py/original_semantics/after_0.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:56 2016
 
 Model author: Yentl Van Tendeloo
 Model name:   after_0
@@ -85,11 +85,8 @@ class A(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/x"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/x"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class B(RuntimeClassBase):
     def __init__(self, controller):
@@ -148,11 +145,8 @@ class B(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/z"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/z"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -172,9 +166,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addOutputPort("test_output")
         self.object_manager.createInstance("A", [])
 

+ 8 - 13
test/target_py/original_semantics/associate_event.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestAssociateEvent
@@ -79,11 +79,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/start"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/start"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Class2(RuntimeClassBase):
     def __init__(self, controller):
@@ -133,11 +130,8 @@ class Class2(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/start"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/start"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -157,9 +151,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/correct_duplicate_state_id.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestCorrectDuplicateStateId
@@ -74,11 +74,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/state1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/state1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -93,9 +90,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.object_manager.createInstance("Class1", [])
 
 class InputEvent:

+ 6 - 8
test/target_py/original_semantics/enter_exit_hierarchy.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestEnterExitHierarchy
@@ -152,11 +152,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/outside"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/outside"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -171,9 +168,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/guard.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestGuard
@@ -92,11 +92,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/state_1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/state_1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -111,9 +108,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])
 

+ 6 - 8
test/target_py/original_semantics/history.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:24 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestHistory
@@ -96,11 +96,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/composite_1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/composite_1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -115,9 +112,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/history_deep.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestHistoryDeep
@@ -192,11 +192,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -211,9 +208,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])
 

+ 6 - 8
test/target_py/original_semantics/history_parallel_deep.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestHistoryParallelDeep
@@ -191,11 +191,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -210,9 +207,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])
 

+ 6 - 8
test/target_py/original_semantics/inner_first.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestInnerFirst
@@ -83,11 +83,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/state1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/state1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -102,9 +99,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/instate.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestInstate
@@ -134,11 +134,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel_1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel_1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -153,9 +150,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])
 

+ 6 - 8
test/target_py/original_semantics/multiple_target.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:57 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestMultipleTarget
@@ -107,11 +107,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/next_to_parallel"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/next_to_parallel"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -126,9 +123,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 8 - 13
test/target_py/original_semantics/object_manager.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestObjectManager
@@ -78,11 +78,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/start"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/start"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class Class2(RuntimeClassBase):
     def __init__(self, controller):
@@ -132,11 +129,8 @@ class Class2(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/start"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/start"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -155,9 +149,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/outer_first.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestOuterFirst
@@ -83,11 +83,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/state1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/state1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -102,9 +99,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/parallel.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallel
@@ -114,11 +114,8 @@ class Class1(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel_1"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel_1"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -133,9 +130,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("Class1", [])

+ 6 - 8
test/target_py/original_semantics/parallel_history.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallelHistory
@@ -158,11 +158,8 @@ class TestClass(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -177,9 +174,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("TestClass", [])

+ 6 - 8
test/target_py/original_semantics/parallel_history_2.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:25 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallelHistory2
@@ -162,11 +162,8 @@ class TestClass(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -181,9 +178,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("TestClass", [])

+ 6 - 8
test/target_py/original_semantics/parallel_history_3.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:26 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Glenn De Jonghe
 Model name:   TestParallelHistory2
@@ -162,11 +162,8 @@ class TestClass(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parallel"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parallel"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -181,9 +178,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("test_input")
         self.addOutputPort("test_output")
         self.object_manager.createInstance("TestClass", [])

+ 6 - 8
test/target_py/priority/00_source_parent.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:26 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_parent
@@ -91,11 +91,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parent"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parent"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -110,9 +107,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/priority/01_source_child.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:26 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_child
@@ -91,11 +91,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/parent"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/parent"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -110,9 +107,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/priority/10_source_parent_history.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:26 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_parent_history
@@ -82,11 +82,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/main"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/main"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -101,9 +98,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/priority/11_source_child_history.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:26 2016
+Date:   Tue Aug 09 09:35:58 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   source_child_history
@@ -82,11 +82,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/main"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/main"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -101,9 +98,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])

+ 6 - 8
test/target_py/timing/00_rapid_py.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Aug 08 09:49:26 2016
+Date:   Tue Aug 09 09:35:59 2016
 
 Model author: Herr Joeri Exelmans
 Model name:   rapid
@@ -77,11 +77,8 @@ class c(RuntimeClassBase):
     
     def initializeStatechart(self):
         # enter default state
-        states = self.states["/a"].getEffectiveTargetStates()
-        self.updateConfiguration(states)
-        for state in states:
-            if state.enter:
-                state.enter()
+        self.default_targets = self.states["/a"].getEffectiveTargetStates()
+        RuntimeClassBase.initializeStatechart(self)
 
 class ObjectManager(ObjectManagerBase):
     def __init__(self, controller):
@@ -96,9 +93,10 @@ class ObjectManager(ObjectManagerBase):
         return instance
 
 class Controller(ThreadsControllerBase):
-    def __init__(self, keep_running = None):
+    def __init__(self, keep_running = None, behind_schedule_callback = None):
         if keep_running == None: keep_running = True
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running)
+        if behind_schedule_callback == None: behind_schedule_callback = None
+        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
         self.addInputPort("in")
         self.addOutputPort("out")
         self.object_manager.createInstance("c", [])