瀏覽代碼

In Python3, have to have tie-breaking in heap-building.

Bentley James Oakes 7 年之前
父節點
當前提交
23609f2d08
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      src/python_sccd/python_sccd_runtime/statecharts_core.py

+ 7 - 0
src/python_sccd/python_sccd_runtime/statecharts_core.py

@@ -1001,6 +1001,11 @@ class RuntimeClassBase(object):
 
 
         self.semantics = StatechartSemantics()
         self.semantics = StatechartSemantics()
 
 
+    #to break ties in the heap,
+    #compare by number of events in the list
+    def __lt__(self, other):
+        return len(self.events.event_list) < len(other.events.event_list)
+
     def start(self):
     def start(self):
         self.configuration = []
         self.configuration = []
         
         
@@ -1051,7 +1056,9 @@ class RuntimeClassBase(object):
         
         
     def addEvent(self, event_list, time_offset = 0):
     def addEvent(self, event_list, time_offset = 0):
         event_time = self.controller.simulated_time + time_offset
         event_time = self.controller.simulated_time + time_offset
+
         heappush(self.controller.object_manager.instance_times, (event_time, self))
         heappush(self.controller.object_manager.instance_times, (event_time, self))
+
         if event_time < self.earliest_event_time:
         if event_time < self.earliest_event_time:
             self.earliest_event_time = event_time
             self.earliest_event_time = event_time
         if not isinstance(event_list, list):
         if not isinstance(event_list, list):