19#ifndef __SYSTEMC_EXT_TLM_UTILS_INSTANCE_SPECIFIC_EXTENSIONS_INT_H__
20#define __SYSTEMC_EXT_TLM_UTILS_INSTANCE_SPECIFIC_EXTENSIONS_INT_H__
31class instance_specific_extension_accessor;
32class instance_specific_extension_container;
33class instance_specific_extension_carrier;
34class instance_specific_extension_container_pool;
41extern template class tlm_array<tlm_utils::ispex_base *>;
59 static unsigned int register_private_extension(
const std::type_info &);
76 m_container(container)
83 return static_cast<T *
>(set_extension(T::priv_id, ext));
93 ext =
static_cast<T *
>(get_extension(T::priv_id));
96 ispex_base *get_extension(
unsigned int index)
const;
102 clear_extension(T::priv_id);
106 void clear_extension(
unsigned int index);
113 void resize_extensions();
139 void inc_use_count();
140 void dec_use_count();
147 get_accessor(
unsigned int index);
172 template <
typename T>
177 static void release_carrier(
std::vector< instance_specific_extensions_per_accessor * > m_ispex_per_accessor
void release_fn(instance_specific_extension_carrier *, void *)
instance_specific_extension_carrier * m_carrier
friend class instance_specific_extension_container_pool
instance_specific_extension_container * next
release_fn * m_release_fn
friend class instance_specific_extensions_per_accessor
friend class instance_specific_extension_accessor
friend class instance_specific_extension_carrier
container_type * m_container
void clear_extension(const T *)
instance_specific_extensions_per_accessor(container_type *container)
tlm::tlm_array< ispex_base * > m_extensions
T * set_extension(T *ext)
void get_extension(T *&ext) const
instance_specific_extension_container container_type