37 virtual ~IObjectRegistry () =
default;
41 assert_main_thread ();
42 register_object_impl (obj);
45 void acquire_reference (
const QUuid &
id)
47 assert_main_thread ();
48 acquire_reference_impl (
id);
51 void release_reference (
const QUuid &
id)
53 assert_main_thread ();
54 release_reference_impl (
id);
62 return find_by_raw_uuid_impl (
id);
65 bool contains (
const QUuid &
id)
const
67 assert_main_thread ();
68 return contains_impl (
id);
80 void for_each_matching (std::function<
void (T &)> visitor)
const
83 auto * casted = qobject_cast<T *> (&obj);
84 assert (casted !=
nullptr);
89 template <
typename T> [[nodiscard]]
size_t count_matching ()
const
93 assert (qobject_cast<T *> (&obj) !=
nullptr);
100 IObjectRegistry () : creation_thread_id_ (current_thread_id) { }
103 void assert_main_thread ()
const
105 assert (creation_thread_id_ == current_thread_id);
110 virtual void acquire_reference_impl (
const QUuid &
id) = 0;
111 virtual void release_reference_impl (
const QUuid &
id) = 0;
113 find_by_raw_uuid_impl (
const QUuid &
id)
const = 0;
114 virtual bool contains_impl (
const QUuid &
id)
const = 0;
118 for_each_matching_impl (
const QMetaObject &meta_type, ObjectVisitor visitor)