4040
4141namespace godot {
4242
43- std::unordered_map <StringName, ClassDB::ClassInfo> ClassDB::classes;
44- std::unordered_map <StringName, const GDExtensionInstanceBindingCallbacks *> ClassDB::instance_binding_callbacks;
43+ HashMap <StringName, ClassDB::ClassInfo> ClassDB::classes;
44+ HashMap <StringName, const GDExtensionInstanceBindingCallbacks *> ClassDB::instance_binding_callbacks;
4545std::vector<StringName> ClassDB::class_register_order;
46- std::unordered_map <StringName, Object *> ClassDB::engine_singletons;
46+ HashMap <StringName, Object *> ClassDB::engine_singletons;
4747std::mutex ClassDB::engine_singletons_mutex;
4848GDExtensionInitializationLevel ClassDB::current_level = GDEXTENSION_INITIALIZATION_CORE;
4949
@@ -116,9 +116,9 @@ MethodBind *ClassDB::get_method(const StringName &p_class, const StringName &p_m
116116
117117 ClassInfo *type = &classes[p_class];
118118 while (type) {
119- std::unordered_map <StringName, MethodBind *>::iterator method = type->method_map .find (p_method);
119+ HashMap <StringName, MethodBind *>::Iterator method = type->method_map .find (p_method);
120120 if (method != type->method_map .end ()) {
121- return method->second ;
121+ return method->value ;
122122 }
123123 type = type->parent_ptr ;
124124 continue ;
@@ -130,13 +130,13 @@ MethodBind *ClassDB::get_method(const StringName &p_class, const StringName &p_m
130130MethodBind *ClassDB::bind_methodfi (uint32_t p_flags, MethodBind *p_bind, const MethodDefinition &method_name, const void **p_defs, int p_defcount) {
131131 StringName instance_type = p_bind->get_instance_class ();
132132
133- std::unordered_map <StringName, ClassInfo>::iterator type_it = classes.find (instance_type);
133+ HashMap <StringName, ClassInfo>::Iterator type_it = classes.find (instance_type);
134134 if (type_it == classes.end ()) {
135135 memdelete (p_bind);
136136 ERR_FAIL_V_MSG (nullptr , String (" Class '{0}' doesn't exist." ).format (Array::make (instance_type)));
137137 }
138138
139- ClassInfo &type = type_it->second ;
139+ ClassInfo &type = type_it->value ;
140140
141141 if (type.method_map .find (method_name.name ) != type.method_map .end ()) {
142142 memdelete (p_bind);
@@ -235,11 +235,11 @@ void ClassDB::bind_method_godot(const StringName &p_class_name, MethodBind *p_me
235235}
236236
237237void ClassDB::add_signal (const StringName &p_class, const MethodInfo &p_signal) {
238- std::unordered_map <StringName, ClassInfo>::iterator type_it = classes.find (p_class);
238+ HashMap <StringName, ClassInfo>::Iterator type_it = classes.find (p_class);
239239
240240 ERR_FAIL_COND_MSG (type_it == classes.end (), String (" Class '{0}' doesn't exist." ).format (Array::make (p_class)));
241241
242- ClassInfo &cl = type_it->second ;
242+ ClassInfo &cl = type_it->value ;
243243
244244 // Check if this signal is already register
245245 ClassInfo *check = &cl;
@@ -270,11 +270,11 @@ void ClassDB::add_signal(const StringName &p_class, const MethodInfo &p_signal)
270270}
271271
272272void ClassDB::bind_integer_constant (const StringName &p_class_name, const StringName &p_enum_name, const StringName &p_constant_name, GDExtensionInt p_constant_value, bool p_is_bitfield) {
273- std::unordered_map <StringName, ClassInfo>::iterator type_it = classes.find (p_class_name);
273+ HashMap <StringName, ClassInfo>::Iterator type_it = classes.find (p_class_name);
274274
275275 ERR_FAIL_COND_MSG (type_it == classes.end (), String (" Class '{0}' doesn't exist." ).format (Array::make (p_class_name)));
276276
277- ClassInfo &type = type_it->second ;
277+ ClassInfo &type = type_it->value ;
278278
279279 // check if it already exists
280280 ERR_FAIL_COND_MSG (type.constant_names .find (p_constant_name) != type.constant_names .end (), String (" Constant '{0}::{1}' already registered." ).format (Array::make (p_class_name, p_constant_name)));
@@ -292,17 +292,17 @@ GDExtensionClassCallVirtual ClassDB::get_virtual_func(void *p_userdata, GDExtens
292292 const StringName *class_name = reinterpret_cast <const StringName *>(p_userdata);
293293 const StringName *name = reinterpret_cast <const StringName *>(p_name);
294294
295- std::unordered_map <StringName, ClassInfo>::iterator type_it = classes.find (*class_name);
295+ HashMap <StringName, ClassInfo>::Iterator type_it = classes.find (*class_name);
296296 ERR_FAIL_COND_V_MSG (type_it == classes.end (), nullptr , String (" Class '{0}' doesn't exist." ).format (Array::make (*class_name)));
297297
298- const ClassInfo *type = &type_it->second ;
298+ const ClassInfo *type = &type_it->value ;
299299
300300 // Find method in current class, or any of its parent classes (Godot classes not included)
301301 while (type != nullptr ) {
302- std::unordered_map <StringName, ClassInfo::VirtualMethod>::const_iterator method_it = type->virtual_methods .find (*name);
302+ HashMap <StringName, ClassInfo::VirtualMethod>::ConstIterator method_it = type->virtual_methods .find (*name);
303303
304- if (method_it != type->virtual_methods .end () && method_it->second .hash == p_hash) {
305- return method_it->second .func ;
304+ if (method_it != type->virtual_methods .end () && method_it->value .hash == p_hash) {
305+ return method_it->value .func ;
306306 }
307307
308308 type = type->parent_ptr ;
@@ -312,9 +312,9 @@ GDExtensionClassCallVirtual ClassDB::get_virtual_func(void *p_userdata, GDExtens
312312}
313313
314314const GDExtensionInstanceBindingCallbacks *ClassDB::get_instance_binding_callbacks (const StringName &p_class) {
315- std::unordered_map <StringName, const GDExtensionInstanceBindingCallbacks *>::iterator callbacks_it = instance_binding_callbacks.find (p_class);
315+ HashMap <StringName, const GDExtensionInstanceBindingCallbacks *>::Iterator callbacks_it = instance_binding_callbacks.find (p_class);
316316 if (likely (callbacks_it != instance_binding_callbacks.end ())) {
317- return callbacks_it->second ;
317+ return callbacks_it->value ;
318318 }
319319
320320 // If we don't have an instance binding callback for the given class, find the closest parent where we do.
@@ -325,14 +325,14 @@ const GDExtensionInstanceBindingCallbacks *ClassDB::get_instance_binding_callbac
325325 callbacks_it = instance_binding_callbacks.find (class_name);
326326 } while (callbacks_it == instance_binding_callbacks.end ());
327327
328- return callbacks_it->second ;
328+ return callbacks_it->value ;
329329}
330330
331331void ClassDB::bind_virtual_method (const StringName &p_class, const StringName &p_method, GDExtensionClassCallVirtual p_call, uint32_t p_hash) {
332- std::unordered_map <StringName, ClassInfo>::iterator type_it = classes.find (p_class);
332+ HashMap <StringName, ClassInfo>::Iterator type_it = classes.find (p_class);
333333 ERR_FAIL_COND_MSG (type_it == classes.end (), String (" Class '{0}' doesn't exist." ).format (Array::make (p_class)));
334334
335- ClassInfo &type = type_it->second ;
335+ ClassInfo &type = type_it->value ;
336336
337337 ERR_FAIL_COND_MSG (type.method_map .find (p_method) != type.method_map .end (), String (" Method '{0}::{1}()' already registered as non-virtual." ).format (Array::make (p_class, p_method)));
338338 ERR_FAIL_COND_MSG (type.virtual_methods .find (p_method) != type.virtual_methods .end (), String (" Virtual '{0}::{1}()' method already registered." ).format (Array::make (p_class, p_method)));
@@ -344,7 +344,7 @@ void ClassDB::bind_virtual_method(const StringName &p_class, const StringName &p
344344}
345345
346346void ClassDB::add_virtual_method (const StringName &p_class, const MethodInfo &p_method, const Vector<StringName> &p_arg_names) {
347- std::unordered_map <StringName, ClassInfo>::iterator type_it = classes.find (p_class);
347+ HashMap <StringName, ClassInfo>::Iterator type_it = classes.find (p_class);
348348 ERR_FAIL_COND_MSG (type_it == classes.end (), String (" Class '{0}' doesn't exist." ).format (Array::make (p_class)));
349349
350350 GDExtensionClassVirtualMethodInfo mi;
@@ -392,17 +392,17 @@ void ClassDB::_editor_get_classes_used_callback(GDExtensionTypePtr p_packed_stri
392392 PackedStringArray *arr = reinterpret_cast <PackedStringArray *>(p_packed_string_array);
393393 arr->resize (instance_binding_callbacks.size ());
394394 int index = 0 ;
395- for (const std::pair< const StringName, const GDExtensionInstanceBindingCallbacks *> &pair : instance_binding_callbacks) {
396- (*arr)[index++] = pair.first ;
395+ for (const KeyValue< StringName, const GDExtensionInstanceBindingCallbacks *> &pair : instance_binding_callbacks) {
396+ (*arr)[index++] = pair.key ;
397397 }
398398}
399399
400400void ClassDB::initialize_class (const ClassInfo &p_cl) {
401401}
402402
403403void ClassDB::initialize (GDExtensionInitializationLevel p_level) {
404- for (const std::pair< const StringName, ClassInfo> &pair : classes) {
405- const ClassInfo &cl = pair.second ;
404+ for (const KeyValue< StringName, ClassInfo> &pair : classes) {
405+ const ClassInfo &cl = pair.value ;
406406 if (cl.level != p_level) {
407407 continue ;
408408 }
@@ -423,8 +423,8 @@ void ClassDB::deinitialize(GDExtensionInitializationLevel p_level) {
423423
424424 internal::gdextension_interface_classdb_unregister_extension_class (internal::library, name._native_ptr ());
425425
426- for (const std::pair< const StringName, MethodBind *> &method : cl.method_map ) {
427- memdelete (method.second );
426+ for (const KeyValue< StringName, MethodBind *> &method : cl.method_map ) {
427+ memdelete (method.value );
428428 }
429429
430430 classes.erase (name);
@@ -446,8 +446,8 @@ void ClassDB::deinitialize(GDExtensionInitializationLevel p_level) {
446446 {
447447 std::lock_guard<std::mutex> lock (engine_singletons_mutex);
448448 singleton_objects.reserve (engine_singletons.size ());
449- for (const std::pair< const StringName, Object *> &pair : engine_singletons) {
450- singleton_objects.push_back (pair.second );
449+ for (const KeyValue< StringName, Object *> &pair : engine_singletons) {
450+ singleton_objects.push_back (pair.value );
451451 }
452452 }
453453 for (std::vector<Object *>::iterator i = singleton_objects.begin (); i != singleton_objects.end (); i++) {
0 commit comments