29 template class tlm_array<tlm_extension_base *>;
38 class tlm_extension_registry
40 typedef unsigned int key_type;
41 typedef std::map<std::type_index, key_type> type_map;
43 static tlm_extension_registry &
54 register_extension(std::type_index
type)
56 type_map::const_iterator it =
ids_.find(
type);
58 if (it ==
ids_.end()) {
60 type_map::value_type
v(
type,
static_cast<key_type
>(
ids_.size()));
70 return (
instance_) ? instance().ids_.size() : 0;
76 tlm_extension_registry() {}
93 return tlm_extension_registry::instance().register_extension(
type);
103 m_byte_enable_length(0), m_streaming_width(0),
111 m_byte_enable_length(0), m_streaming_width(0),
181 const tlm_generic_payload &other,
bool use_byte_enable_on_read)
188 m_dmi = other.is_dmi_allowed();
205 *
reinterpret_cast<u>(&other.m_data[
i]) &
211 typedef unsigned int *
u;
215 *
reinterpret_cast<u>(&other.m_data[
i]) &
237 if (other.m_extensions[
i]) {
279 return "TLM_OK_RESPONSE";
281 return "TLM_INCOMPLETE_RESPONSE";
283 return "TLM_GENERIC_ERROR_RESPONSE";
285 return "TLM_ADDRESS_ERROR_RESPONSE";
287 return "TLM_COMMAND_ERROR_RESPONSE";
289 return "TLM_BURST_ERROR_RESPONSE";
291 return "TLM_BYTE_ENABLE_ERROR_RESPONSE";
293 return "TLM_UNKNOWN_RESPONSE";
311 unsigned int index, tlm_extension_base *
ext)