29#ifndef SC_CORE_SC_INITIALIZER_FUNCTION_H_INCLUDED_
30#define SC_CORE_SC_INITIALIZER_FUNCTION_H_INCLUDED_
39#define SC_INIT(object_name) \
40 sc_core::sc_initializer_function \
41 SC_CONCAT_HELPER_(object_name, _initialization_fn_lambda) { [this]() { \
42 SC_CONCAT_HELPER_(object_name, _initialization_fn)(); \
44 void SC_CONCAT_HELPER_(object_name,_initialization_fn)()
46#define SC_NAMED_WITH_INIT(object_name,...) \
47 object_name { sc_core::sc_initializer_function_name_fwd(SC_STRINGIFY_HELPER_(object_name), \
48 [this]{ SC_CONCAT_HELPER_(object_name,_initialization_fn)(); }), __VA_ARGS__ }; \
49 void SC_CONCAT_HELPER_(object_name,_initialization_fn)()
51#define SC_THREAD_IMP(thread_name, ...) \
52 SC_INIT(thread_name) { \
53 SC_THREAD(thread_name); \
58#define SC_CTHREAD_IMP(thread_name, edge, ...) \
59 SC_INIT(thread_name) { \
60 SC_CTHREAD(thread_name, edge); \
65#define SC_METHOD_IMP(method_name, ...) \
66 SC_INIT(method_name) { \
67 SC_METHOD(method_name); \
82 if (simctx->elaboration_done())
85 auto curr_module =
static_cast<sc_module*
>( simctx->hierarchy_curr() );
86 if (curr_module ==
nullptr)
89 sc_assert(curr_module->m_module_name_p !=
nullptr);
90 curr_module->m_module_name_p->m_initializer_fn_vec.emplace_back(std::move(fn));
#define SC_REPORT_ERROR(msg_type, msg)
sc_simcontext * sc_get_curr_simcontext()
const char * sc_initializer_function_name_fwd(const char *name, F &&fn)
const char SC_ID_INSERT_INITIALIZER_FN_[]
sc_initializer_function(F &&fn)