sc_object::sc_object(const char* nm) : m_attr_cltn_p(0), m_child_events(), m_child_objects(), m_name(), m_parent(0), m_simc(0) { int namebuf_alloc = 0; char* namebuf = 0; const char* p; // null name or "" uses machine generated name. if ( !nm || !*nm ) nm = sc_gen_unique_name("object"); p = nm; if (nm && sc_enable_name_checking) { namebuf_alloc = 1 + strlen(nm); namebuf = (char*) sc_mempool::allocate(namebuf_alloc); char* q = namebuf; const char* r = nm; bool has_illegal_char = false; while (*r) { if (object_name_illegal_char(*r)) { has_illegal_char = true; *q = '_'; } else { *q = *r; } r++; q++; } *q = '\0'; p = namebuf; if (has_illegal_char) { std::string message = nm; message += " substituted by "; message += namebuf; SC_REPORT_WARNING( SC_ID_ILLEGAL_CHARACTERS_, message.c_str()); } } sc_object_init(p); sc_mempool::release( namebuf, namebuf_alloc ); }
sc_object::sc_object() : m_attr_cltn_p(0), m_child_events(), m_child_objects(), m_name(), m_parent(0), m_simc(0) { sc_object_init( sc_gen_unique_name("object") ); }
sc_object::sc_object( const sc_object& that ) : m_attr_cltn_p(0), m_child_events(), m_child_objects(), m_name(), m_parent(0), m_simc(0) { sc_object_init( sc_gen_unique_name( that.basename() ) ); }
sc_object::sc_object() : m_parent(0) { sc_object_init( sc_gen_unique_name("object") ); }