16 #ifndef _SCP_PATHTRACE_EXTENSION_H
17 #define _SCP_PATHTRACE_EXTENSION_H
24 namespace tlm_extensions {
35 class path_trace :
public tlm::tlm_extension<path_trace> {
36 std::vector<sc_core::sc_object*> m_path;
42 virtual tlm_extension_base* clone()
const override {
return new path_trace(*
this); }
44 virtual void copy_from(
const tlm_extension_base& ext)
override {
53 void stamp(sc_core::sc_object* obj) { m_path.push_back(obj); }
59 void reset() { m_path.clear(); }
66 std::string
to_string(std::string separator =
"->") {
67 std::stringstream info;
69 for(
auto o : m_path) {
70 info << s << o->name();
void reset()
Convenience function to clear vector (eg. before returning to a pool)
std::string to_string(std::string separator="->")
convert extension to a string
void stamp(sc_core::sc_object *obj)
Stamp object into the PathTrace.