33#include <shared_mutex>
49findEventIn(
Events &events,
const std::string &
name)
52 for (it = events.begin(); it != events.end(); it++)
53 if (!strcmp((*it)->name(),
name.c_str()))
60addEvent(
Events *events, sc_core::sc_event *event)
62 events->emplace(events->end(), event);
66popEvent(
Events* events,
const std::string &
name)
69 assert(it != events->end());
70 std::swap(events->back(), *it);
74std::shared_mutex globalEventLock;
89 _triggeredStamp(~0ULL)
91 [[maybe_unused]] std::unique_lock lock(globalEventLock);
102 std::string original_name = _basename;
107 obj->addChildEvent(_sc_event);
112 std::string path = parent ? (std::string(parent->name()) +
".") :
"";
114 if (original_name !=
"" && _basename != original_name) {
115 std::string message = path + original_name +
116 ". Latter declaration will be renamed to " +
122 _name = path + _basename;
133 [[maybe_unused]] std::unique_lock lock(globalEventLock);
182 int size = senses.size();
185 if (senses[pos]->
notify(
this))
186 senses[pos] = senses[--size];
246 [[maybe_unused]] std::unique_lock lock(globalEventLock);
258 [[maybe_unused]] std::shared_lock lock(globalEventLock);
261 return it ==
allEvents.end() ? nullptr : *it;
StaticSensitivities staticSenseMethod
DynamicSensitivities dynamicSenseMethod
sc_core::sc_object * getParentObject() const
StaticSensitivities staticSenseThread
const std::string & basename() const
DynamicSensitivities dynamicSenseThread
Event(sc_core::sc_event *_sc_event, bool internal=false)
void notifyDelayed(const sc_core::sc_time &t)
sc_core::sc_event * _sc_event
const std::string & name() const
sc_core::sc_object * parent
void delChildEvent(sc_core::sc_event *e)
static Object * getFromScObject(sc_core::sc_object *sc_obj)
const char SC_ID_INSTANCE_EXISTS_[]
const char SC_ID_IMMEDIATE_NOTIFICATION_[]
const char SC_ID_NOTIFY_DELAYED_[]
const char * sc_gen_unique_name(const char *seed)
sc_core::sc_event * findEvent(const char *name)
UniqueNameGen globalNameGen
std::vector< sc_core::sc_event * > Events
std::string pickUniqueName(::sc_core::sc_object *parent, std::string base)
Events::iterator EventsIt
std::vector< StaticSensitivity * > StaticSensitivities
sc_core::sc_object * pickParentObj()
std::vector< DynamicSensitivity * > DynamicSensitivities
#define SC_REPORT_WARNING(msg_type, msg)
#define SC_REPORT_ERROR(msg_type, msg)
const std::string & name()