43 return &obj->registry_fields;
94 template<
typename DATA,
typename Deleter = std::default_delete<DATA>>
111 return (DATA *) reg_obj->
get (
m_key);
117 void set (
T *obj, DATA *data)
const
120 reg_obj->
set (
m_key, (
typename std::remove_const<DATA> *) data);
127 template<
typename Dummy = DATA *,
typename... Args>
128 typename std::enable_if<std::is_same<Deleter,
129 std::default_delete<DATA>>
::value,
133 DATA *result =
new DATA (std::forward<Args> (args)...);
143 DATA *datum =
get (obj);
144 if (datum !=
nullptr)
157 DATA *datum = (DATA *) arg;
171 std::vector<registry_data_callback> ®istrations
173 unsigned last = registrations.size ();
174 for (
unsigned i = 0; i < last; ++i)
179 registrations[i] (elt);
196 std::vector<registry_data_callback> ®istrations
198 unsigned result = registrations.size ();
199 registrations.push_back (free);
223 static std::vector<registry_data_callback> registrations;
224 return registrations;
constexpr string_view get()
static void cleanup(void *arg)
void set(T *obj, DATA *data) const
std::enable_if< std::is_same< Deleter, std::default_delete< DATA > >::value, Dummy >::type emplace(T *obj, Args &&...args) const
DISABLE_COPY_AND_ASSIGN(key)
void(* registry_data_callback)(void *)
void set(unsigned key, void *datum)
static unsigned new_key(registry_data_callback free)
static std::vector< registry_data_callback > & get_registrations()
std::vector< void * > m_fields
DISABLE_COPY_AND_ASSIGN(registry)
static registry< T > * get(T *obj)