20 #include <tlm_utils/instance_specific_extensions_int.h>
29 template class tlm_array<tlm_utils::ispex_base *>;
41 typedef unsigned int key_type;
42 typedef std::map<std::type_index, key_type> type_map;
45 static ispex_registry &
56 register_extension(std::type_index
type)
58 type_map::const_iterator it =
ids_.find(
type);
60 if (it ==
ids_.end()) {
62 type_map::value_type
v(
type,
static_cast<key_type
>(
ids_.size()));
72 return (
instance_) ? instance().ids_.size() : 0;
86 ispex_base::register_private_extension(
const std::type_info &
type)
88 return ispex_registry::instance().register_extension(
type);
95 static unsigned int max_num = 0;
125 instance_specific_extension_container_pool::create()
131 unused = unused->
next;
136 instance_specific_extension_container_pool::free(
143 instance_specific_extension_container_pool::
144 ~instance_specific_extension_container_pool()
148 unused = unused->
next;
156 instance_specific_extension_container::create()
158 return instance_specific_extension_container_pool::instance().
create();
161 instance_specific_extension_container::
162 instance_specific_extension_container() :
163 use_count(0), m_txn(NULL), m_release_fn(NULL), m_carrier(NULL), next(NULL)
171 void *txn, release_fn *rel_fn)
238 unsigned int index)
const