Simplified ObjectDB::get_instance() casting

Reduces boiler plate by templating `get_instance()` for the cast type, while remaining backward compatible to the existing functionality.
This commit is contained in:
lawnjelly 2024-12-19 12:44:33 +00:00 committed by Relintai
parent ae19a49a1e
commit dedeec9492
2 changed files with 7 additions and 0 deletions

View File

@ -2043,6 +2043,7 @@ void ObjectDB::remove_instance(Object *p_object) {
rw_lock.write_unlock(); rw_lock.write_unlock();
} }
Object *ObjectDB::get_instance(ObjectID p_instance_id) { Object *ObjectDB::get_instance(ObjectID p_instance_id) {
rw_lock.read_lock(); rw_lock.read_lock();
Object **obj = instances.getptr(p_instance_id); Object **obj = instances.getptr(p_instance_id);

View File

@ -856,6 +856,12 @@ public:
typedef void (*DebugFunc)(Object *p_obj); typedef void (*DebugFunc)(Object *p_obj);
static Object *get_instance(ObjectID p_instance_id); static Object *get_instance(ObjectID p_instance_id);
template <class T>
static T *get_instance(ObjectID p_instance_id) {
return Object::cast_to<T>(get_instance(p_instance_id));
}
static void debug_objects(DebugFunc p_func); static void debug_objects(DebugFunc p_func);
static int get_object_count(); static int get_object_count();