1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Remove OAHashMap, in favour of AHashMap.

The two types had (mostly) the same decisions, but `AHashMap` is a faster implementation, and is more consistent with `HashMap`.
This commit is contained in:
Lukas Tenbrink
2025-05-31 15:50:10 +02:00
parent b89c47bb85
commit 963c20565b
16 changed files with 219 additions and 878 deletions

View File

@@ -34,7 +34,7 @@
#include "core/object/ref_counted.h"
#include "core/object/script_language.h"
#include "core/os/os.h"
#include "core/templates/oa_hash_map.h"
#include "core/templates/a_hash_map.h"
#include "core/templates/rid.h"
#include "core/templates/rid_owner.h"
#include "core/variant/binder_common.h"
@@ -1596,7 +1596,7 @@ struct VariantUtilityFunctionInfo {
Variant::UtilityFunctionType type;
};
static OAHashMap<StringName, VariantUtilityFunctionInfo> utility_function_table;
static AHashMap<StringName, VariantUtilityFunctionInfo> utility_function_table;
static List<StringName> utility_function_name_table;
template <typename T>
@@ -1788,7 +1788,7 @@ void Variant::_unregister_variant_utility_functions() {
}
void Variant::call_utility_function(const StringName &p_name, Variant *r_ret, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
r_error.argument = 0;
@@ -1816,7 +1816,7 @@ bool Variant::has_utility_function(const StringName &p_name) {
}
Variant::ValidatedUtilityFunction Variant::get_validated_utility_function(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return nullptr;
}
@@ -1825,7 +1825,7 @@ Variant::ValidatedUtilityFunction Variant::get_validated_utility_function(const
}
Variant::PTRUtilityFunction Variant::get_ptr_utility_function(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return nullptr;
}
@@ -1834,7 +1834,7 @@ Variant::PTRUtilityFunction Variant::get_ptr_utility_function(const StringName &
}
Variant::UtilityFunctionType Variant::get_utility_function_type(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return Variant::UTILITY_FUNC_TYPE_MATH;
}
@@ -1844,7 +1844,7 @@ Variant::UtilityFunctionType Variant::get_utility_function_type(const StringName
MethodInfo Variant::get_utility_function_info(const StringName &p_name) {
MethodInfo info;
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (bfi) {
info.name = p_name;
if (bfi->returns_value && bfi->return_type == Variant::NIL) {
@@ -1865,7 +1865,7 @@ MethodInfo Variant::get_utility_function_info(const StringName &p_name) {
}
int Variant::get_utility_function_argument_count(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return 0;
}
@@ -1874,7 +1874,7 @@ int Variant::get_utility_function_argument_count(const StringName &p_name) {
}
Variant::Type Variant::get_utility_function_argument_type(const StringName &p_name, int p_arg) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return Variant::NIL;
}
@@ -1883,7 +1883,7 @@ Variant::Type Variant::get_utility_function_argument_type(const StringName &p_na
}
String Variant::get_utility_function_argument_name(const StringName &p_name, int p_arg) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return String();
}
@@ -1893,7 +1893,7 @@ String Variant::get_utility_function_argument_name(const StringName &p_name, int
}
bool Variant::has_utility_function_return_value(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return false;
}
@@ -1901,7 +1901,7 @@ bool Variant::has_utility_function_return_value(const StringName &p_name) {
}
Variant::Type Variant::get_utility_function_return_type(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return Variant::NIL;
}
@@ -1910,7 +1910,7 @@ Variant::Type Variant::get_utility_function_return_type(const StringName &p_name
}
bool Variant::is_utility_function_vararg(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
if (!bfi) {
return false;
}
@@ -1919,7 +1919,7 @@ bool Variant::is_utility_function_vararg(const StringName &p_name) {
}
uint32_t Variant::get_utility_function_hash(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
const VariantUtilityFunctionInfo *bfi = utility_function_table.getptr(p_name);
ERR_FAIL_NULL_V(bfi, 0);
uint32_t hash = hash_murmur3_one_32(bfi->is_vararg);