summaryrefslogtreecommitdiff
path: root/src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp')
-rw-r--r--src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp128
1 files changed, 63 insertions, 65 deletions
diff --git a/src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp b/src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp
index 5f3fb25e0..2c8b1e1a0 100644
--- a/src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp
+++ b/src/systemc/tlm_core/tlm_2/tlm_generic_payload/tlm_phase.cpp
@@ -17,97 +17,95 @@
*****************************************************************************/
-#include "tlm_core/tlm_2/tlm_generic_payload/tlm_phase.h"
-#include "sysc/utils/sc_string_view.h"
-#include "sysc/utils/sc_typeindex.h"
-#include "sysc/utils/sc_report.h"
#include <cstring>
#include <map>
+#include <systemc>
+#include <tlm>
using sc_core::sc_string_view;
using sc_core::sc_type_index;
-namespace tlm {
-/* anonymous */ namespace {
-
-struct tlm_phase_registry
+namespace tlm
{
- typedef unsigned int key_type;
- static tlm_phase_registry& instance()
- { static tlm_phase_registry inst; return inst; }
+namespace
+{
- unsigned int register_phase(sc_type_index type, sc_string_view name)
- {
- type_map::const_iterator it = ids_.find( type );
+struct tlm_phase_registry
+{
+ typedef unsigned int key_type;
- if( name.empty() ) {
- SC_REPORT_FATAL( sc_core::SC_ID_INTERNAL_ERROR_,
- "unexpected empty tlm_phase name" );
- return UNINITIALIZED_PHASE;
+ static tlm_phase_registry &
+ instance()
+ {
+ static tlm_phase_registry inst;
+ return inst;
}
- if( it == ids_.end() ) { // new phase - generate/store ID and name
- type_map::value_type v( type, static_cast<key_type>(names_.size()) );
- names_.push_back( name_table::value_type(name.data(), name.size()) );
- ids_.insert( v );
- return v.second;
+ unsigned int
+ register_phase(sc_type_index type, sc_string_view name)
+ {
+ type_map::const_iterator it = ids_.find(type);
+
+ if (name.empty()) {
+ SC_REPORT_FATAL( sc_core::SC_ID_INTERNAL_ERROR_,
+ "unexpected empty tlm_phase name" );
+ return UNINITIALIZED_PHASE;
+ }
+
+ if (it == ids_.end()) {
+ // new phase - generate/store ID and name
+ type_map::value_type v(type, static_cast<key_type>(names_.size()));
+ names_.push_back(name_table::value_type(name.data(), name.size()));
+ ids_.insert(v);
+ return v.second;
+ }
+
+ if (names_[it->second] != name) {
+ SC_REPORT_FATAL(sc_core::SC_ID_INTERNAL_ERROR_,
+ "tlm_phase registration failed: duplicate type info" );
+ sc_core::sc_abort();
+ }
+ return it->second;
}
- if( names_[it->second] != name ) {
- SC_REPORT_FATAL( sc_core::SC_ID_INTERNAL_ERROR_,
- "tlm_phase registration failed: duplicate type info" );
- sc_core::sc_abort();
+ const char *
+ get_name(key_type id) const
+ {
+ sc_assert(id < names_.size());
+ return names_[id].c_str();
}
- return it->second;
- }
-
- const char* get_name( key_type id ) const
- {
- sc_assert( id < names_.size() );
- return names_[id].c_str();
- }
-private:
- typedef std::map<sc_type_index, key_type> type_map;
- typedef std::vector<std::string> name_table;
+ private:
+ typedef std::map<sc_type_index, key_type> type_map;
+ typedef std::vector<std::string> name_table;
- type_map ids_;
- name_table names_;
+ type_map ids_;
+ name_table names_;
- tlm_phase_registry()
- : names_( END_RESP+1 )
- {
-# define BUILTIN_PHASE(phase) \
- names_[phase] = #phase
-
- BUILTIN_PHASE( UNINITIALIZED_PHASE );
- BUILTIN_PHASE( BEGIN_REQ );
- BUILTIN_PHASE( END_REQ );
- BUILTIN_PHASE( BEGIN_RESP );
- BUILTIN_PHASE( END_RESP );
- }
-
-}; // class tlm_phase_registry
+ tlm_phase_registry() : names_(END_RESP + 1)
+ {
+ names_[UNINITIALIZED_PHASE] = "UNINITIALIZED_PHASE";
+ names_[BEGIN_REQ] = "BEGIN_REQ";
+ names_[END_REQ] = "END_REQ";
+ names_[BEGIN_RESP] = "BEGIN_RESP";
+ names_[END_RESP] = "END_RESP";
+ }
+};
} // anonymous namespace
-tlm_phase::tlm_phase( unsigned int id )
- : m_id(id)
-{
- // TODO: validate id?
- // TODO: add deprecation warning?
-}
+tlm_phase::tlm_phase(unsigned int id) : m_id(id)
+{}
-tlm_phase::tlm_phase( const std::type_info& type, const char* name )
- : m_id( tlm_phase_registry::instance().register_phase(type, name) )
+tlm_phase::tlm_phase(const std::type_info &type, const char *name) :
+ m_id(tlm_phase_registry::instance().register_phase(type, name))
{}
-const char*
+const char *
tlm_phase::get_name() const
{
- return tlm_phase_registry::instance().get_name( m_id );
+ return tlm_phase_registry::instance().get_name(m_id);
}
} // namespace tlm
-// Taf!