diff options
Diffstat (limited to 'src/systemc/core/module.hh')
-rw-r--r-- | src/systemc/core/module.hh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/systemc/core/module.hh b/src/systemc/core/module.hh index 696d8c570..8aebff251 100644 --- a/src/systemc/core/module.hh +++ b/src/systemc/core/module.hh @@ -31,7 +31,10 @@ #define __SYSTEMC_CORE_MODULE_HH__ #include <cassert> +#include <map> #include <set> +#include <sstream> +#include <string> #include "systemc/core/object.hh" #include "systemc/ext/core/sc_module.hh" @@ -39,6 +42,23 @@ namespace sc_gem5 { +class UniqueNameGen +{ + private: + std::map<std::string, int> counts; + std::string buf; + + public: + const char * + gen(std::string seed) + { + std::ostringstream os; + os << seed << "_" << counts[seed]++; + buf = os.str(); + return buf.c_str(); + } +}; + class Module { private: @@ -46,6 +66,8 @@ class Module sc_core::sc_module *_sc_mod; Object *_obj; + UniqueNameGen nameGen; + public: Module(const char *name); @@ -77,6 +99,8 @@ class Module } void pop(); + + const char *uniqueName(const char *seed) { return nameGen.gen(seed); } }; Module *currentModule(); |