summaryrefslogtreecommitdiff
path: root/src/systemc/core/event.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/core/event.cc')
-rw-r--r--src/systemc/core/event.cc37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/systemc/core/event.cc b/src/systemc/core/event.cc
index 0daca12e1..e7132e083 100644
--- a/src/systemc/core/event.cc
+++ b/src/systemc/core/event.cc
@@ -134,6 +134,27 @@ Event::getParentObject() const
}
void
+Event::notify(StaticSensitivities &senses)
+{
+ for (auto s: senses)
+ s->notify(this);
+}
+
+void
+Event::notify(DynamicSensitivities &senses)
+{
+ int size = senses.size();
+ int pos = 0;
+ while (pos < size) {
+ if (senses[pos]->notify(this))
+ senses[pos] = senses[--size];
+ else
+ pos++;
+ }
+ senses.resize(size);
+}
+
+void
Event::notify()
{
if (scheduler.inUpdate()) {
@@ -145,18 +166,10 @@ Event::notify()
if (delayedNotify.scheduled())
scheduler.deschedule(&delayedNotify);
- for (auto s: staticSensitivities)
- s->notify(this);
- DynamicSensitivities &ds = dynamicSensitivities;
- int size = ds.size();
- int pos = 0;
- while (pos < size) {
- if (ds[pos]->notify(this))
- ds[pos] = ds[--size];
- else
- pos++;
- }
- ds.resize(size);
+ notify(staticSenseMethod);
+ notify(dynamicSenseMethod);
+ notify(staticSenseThread);
+ notify(dynamicSenseThread);
}
void