Merge pull request #21423 from exts/mono/collections
[Mono] Added Collections namespace to Array & Dictionary
This commit is contained in:
commit
db55d8a4b6
|
@ -533,7 +533,7 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_output_dir, bo
|
|||
|
||||
cs_icalls_content.push_back("using System;\n"
|
||||
"using System.Runtime.CompilerServices;\n"
|
||||
"using System.Collections.Generic;\n"
|
||||
"using " BINDINGS_NAMESPACE_COLLECTIONS ";\n"
|
||||
"\n");
|
||||
cs_icalls_content.push_back("namespace " BINDINGS_NAMESPACE "\n" OPEN_BLOCK);
|
||||
cs_icalls_content.push_back(INDENT1 "internal static class " BINDINGS_CLASS_NATIVECALLS "\n" INDENT1 OPEN_BLOCK);
|
||||
|
@ -638,7 +638,7 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir,
|
|||
|
||||
cs_icalls_content.push_back("using System;\n"
|
||||
"using System.Runtime.CompilerServices;\n"
|
||||
"using System.Collections.Generic;\n"
|
||||
"using " BINDINGS_NAMESPACE_COLLECTIONS ";\n"
|
||||
"\n");
|
||||
cs_icalls_content.push_back("namespace " BINDINGS_NAMESPACE "\n" OPEN_BLOCK);
|
||||
cs_icalls_content.push_back(INDENT1 "internal static class " BINDINGS_CLASS_NATIVECALLS_EDITOR "\n" INDENT1 OPEN_BLOCK);
|
||||
|
@ -713,7 +713,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
|
|||
output.push_back("using System;\n"); // IntPtr
|
||||
|
||||
if (itype.requires_collections)
|
||||
output.push_back("using System.Collections.Generic;\n"); // Dictionary
|
||||
output.push_back("using " BINDINGS_NAMESPACE_COLLECTIONS ";\n"); // Dictionary
|
||||
|
||||
output.push_back("\nnamespace " BINDINGS_NAMESPACE "\n" OPEN_BLOCK);
|
||||
|
||||
|
@ -1922,7 +1922,7 @@ void BindingsGenerator::_populate_object_type_interfaces() {
|
|||
imethod.return_type.cname = Variant::get_type_name(return_info.type);
|
||||
}
|
||||
|
||||
if (!itype.requires_collections && imethod.return_type.cname == name_cache.type_Dictionary)
|
||||
if (!itype.requires_collections && imethod.return_type.cname == name_cache.type_Dictionary || imethod.return_type.cname == name_cache.type_Array)
|
||||
itype.requires_collections = true;
|
||||
|
||||
for (int i = 0; i < argc; i++) {
|
||||
|
@ -1946,7 +1946,7 @@ void BindingsGenerator::_populate_object_type_interfaces() {
|
|||
|
||||
iarg.name = escape_csharp_keyword(snake_to_camel_case(iarg.name));
|
||||
|
||||
if (!itype.requires_collections && iarg.type.cname == name_cache.type_Dictionary)
|
||||
if (!itype.requires_collections && iarg.type.cname == name_cache.type_Dictionary || imethod.return_type.cname == name_cache.type_Array)
|
||||
itype.requires_collections = true;
|
||||
|
||||
if (m && m->has_default_argument(i)) {
|
||||
|
@ -2371,14 +2371,14 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
|
|||
itype = TypeInterface();
|
||||
itype.name = "Array";
|
||||
itype.cname = itype.name;
|
||||
itype.proxy_name = "Array";
|
||||
itype.proxy_name = "Collections.Array";
|
||||
itype.c_out = "\treturn memnew(Array(%1));\n";
|
||||
itype.c_type = itype.name;
|
||||
itype.c_type_in = itype.c_type + "*";
|
||||
itype.c_type_out = itype.c_type + "*";
|
||||
itype.cs_type = itype.proxy_name;
|
||||
itype.cs_in = "%0." CS_SMETHOD_GETINSTANCE "()";
|
||||
itype.cs_out = "return new Array(%0);";
|
||||
itype.cs_out = "return new Collections.Array(%0);";
|
||||
itype.im_type_in = "IntPtr";
|
||||
itype.im_type_out = "IntPtr";
|
||||
builtin_types.insert(itype.cname, itype);
|
||||
|
@ -2387,14 +2387,14 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
|
|||
itype = TypeInterface();
|
||||
itype.name = "Dictionary";
|
||||
itype.cname = itype.name;
|
||||
itype.proxy_name = "Dictionary";
|
||||
itype.proxy_name = "Collections.Dictionary";
|
||||
itype.c_out = "\treturn memnew(Dictionary(%1));\n";
|
||||
itype.c_type = itype.name;
|
||||
itype.c_type_in = itype.c_type + "*";
|
||||
itype.c_type_out = itype.c_type + "*";
|
||||
itype.cs_type = itype.proxy_name;
|
||||
itype.cs_in = "%0." CS_SMETHOD_GETINSTANCE "()";
|
||||
itype.cs_out = "return new Dictionary(%0);";
|
||||
itype.cs_out = "return new Collections.Dictionary(%0);";
|
||||
itype.im_type_in = "IntPtr";
|
||||
itype.im_type_out = "IntPtr";
|
||||
builtin_types.insert(itype.cname, itype);
|
||||
|
@ -2441,7 +2441,7 @@ void BindingsGenerator::_populate_builtin_type(TypeInterface &r_itype, Variant::
|
|||
else
|
||||
iarg.type.cname = Variant::get_type_name(pi.type);
|
||||
|
||||
if (!r_itype.requires_collections && iarg.type.cname == name_cache.type_Dictionary)
|
||||
if (!r_itype.requires_collections && iarg.type.cname == name_cache.type_Dictionary || imethod.return_type.cname == name_cache.type_Array)
|
||||
r_itype.requires_collections = true;
|
||||
|
||||
if ((mi.default_arguments.size() - mi.arguments.size() + i) >= 0)
|
||||
|
@ -2457,7 +2457,7 @@ void BindingsGenerator::_populate_builtin_type(TypeInterface &r_itype, Variant::
|
|||
imethod.return_type.cname = Variant::get_type_name(mi.return_val.type);
|
||||
}
|
||||
|
||||
if (!r_itype.requires_collections && imethod.return_type.cname == name_cache.type_Dictionary)
|
||||
if (!r_itype.requires_collections && imethod.return_type.cname == name_cache.type_Dictionary || imethod.return_type.cname == name_cache.type_Array)
|
||||
r_itype.requires_collections = true;
|
||||
|
||||
if (r_itype.class_doc) {
|
||||
|
|
|
@ -209,32 +209,32 @@ bool godot_icall_Dictionary_TryGetValue(Dictionary *ptr, MonoObject *key, MonoOb
|
|||
}
|
||||
|
||||
void godot_register_collections_icalls() {
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Ctor", (void *)godot_icall_Array_Ctor);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Dtor", (void *)godot_icall_Array_Dtor);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_At", (void *)godot_icall_Array_At);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_SetAt", (void *)godot_icall_Array_SetAt);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Count", (void *)godot_icall_Array_Count);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Add", (void *)godot_icall_Array_Add);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Clear", (void *)godot_icall_Array_Clear);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Contains", (void *)godot_icall_Array_Contains);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_CopyTo", (void *)godot_icall_Array_CopyTo);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_IndexOf", (void *)godot_icall_Array_IndexOf);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Insert", (void *)godot_icall_Array_Insert);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_Remove", (void *)godot_icall_Array_Remove);
|
||||
mono_add_internal_call("Godot.Array::godot_icall_Array_RemoveAt", (void *)godot_icall_Array_RemoveAt);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Ctor", (void *)godot_icall_Array_Ctor);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Dtor", (void *)godot_icall_Array_Dtor);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_At", (void *)godot_icall_Array_At);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_SetAt", (void *)godot_icall_Array_SetAt);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Count", (void *)godot_icall_Array_Count);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Add", (void *)godot_icall_Array_Add);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Clear", (void *)godot_icall_Array_Clear);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Contains", (void *)godot_icall_Array_Contains);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_CopyTo", (void *)godot_icall_Array_CopyTo);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_IndexOf", (void *)godot_icall_Array_IndexOf);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Insert", (void *)godot_icall_Array_Insert);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Remove", (void *)godot_icall_Array_Remove);
|
||||
mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_RemoveAt", (void *)godot_icall_Array_RemoveAt);
|
||||
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Ctor", (void *)godot_icall_Dictionary_Ctor);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Dtor", (void *)godot_icall_Dictionary_Dtor);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_GetValue", (void *)godot_icall_Dictionary_GetValue);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_SetValue", (void *)godot_icall_Dictionary_SetValue);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Keys", (void *)godot_icall_Dictionary_Keys);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Values", (void *)godot_icall_Dictionary_Values);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Count", (void *)godot_icall_Dictionary_Count);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Add", (void *)godot_icall_Dictionary_Add);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Clear", (void *)godot_icall_Dictionary_Clear);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Contains", (void *)godot_icall_Dictionary_Contains);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_ContainsKey", (void *)godot_icall_Dictionary_ContainsKey);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_RemoveKey", (void *)godot_icall_Dictionary_RemoveKey);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_Remove", (void *)godot_icall_Dictionary_Remove);
|
||||
mono_add_internal_call("Godot.Dictionary::godot_icall_Dictionary_TryGetValue", (void *)godot_icall_Dictionary_TryGetValue);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Ctor", (void *)godot_icall_Dictionary_Ctor);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Dtor", (void *)godot_icall_Dictionary_Dtor);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_GetValue", (void *)godot_icall_Dictionary_GetValue);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_SetValue", (void *)godot_icall_Dictionary_SetValue);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Keys", (void *)godot_icall_Dictionary_Keys);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Values", (void *)godot_icall_Dictionary_Values);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Count", (void *)godot_icall_Dictionary_Count);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Add", (void *)godot_icall_Dictionary_Add);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Clear", (void *)godot_icall_Dictionary_Clear);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Contains", (void *)godot_icall_Dictionary_Contains);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_ContainsKey", (void *)godot_icall_Dictionary_ContainsKey);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_RemoveKey", (void *)godot_icall_Dictionary_RemoveKey);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Remove", (void *)godot_icall_Dictionary_Remove);
|
||||
mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_TryGetValue", (void *)godot_icall_Dictionary_TryGetValue);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ using System.Collections;
|
|||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Godot
|
||||
namespace Godot.Collections
|
||||
{
|
||||
class ArraySafeHandle : SafeHandle
|
||||
{
|
||||
|
|
|
@ -4,7 +4,7 @@ using System.Collections;
|
|||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Godot
|
||||
namespace Godot.Collections
|
||||
{
|
||||
class DictionarySafeHandle : SafeHandle
|
||||
{
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Godot
|
||||
{
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#define GODOTSHARP_DEFS_H
|
||||
|
||||
#define BINDINGS_NAMESPACE "Godot"
|
||||
#define BINDINGS_NAMESPACE_COLLECTIONS BINDINGS_NAMESPACE ".Collections"
|
||||
#define BINDINGS_GLOBAL_SCOPE_CLASS "GD"
|
||||
#define BINDINGS_PTR_FIELD "ptr"
|
||||
#define BINDINGS_NATIVE_NAME_FIELD "nativeName"
|
||||
|
|
|
@ -156,6 +156,7 @@ void MonoCache::cleanup() {
|
|||
}
|
||||
|
||||
#define GODOT_API_CLASS(m_class) (GDMono::get_singleton()->get_core_api_assembly()->get_class(BINDINGS_NAMESPACE, #m_class))
|
||||
#define GODOT_API_NS_CLAS(m_ns, m_class) (GDMono::get_singleton()->get_core_api_assembly()->get_class(m_ns, #m_class))
|
||||
|
||||
void update_corlib_cache() {
|
||||
|
||||
|
@ -206,8 +207,8 @@ void update_godot_api_cache() {
|
|||
CACHE_CLASS_AND_CHECK(Control, GODOT_API_CLASS(Control));
|
||||
CACHE_CLASS_AND_CHECK(Spatial, GODOT_API_CLASS(Spatial));
|
||||
CACHE_CLASS_AND_CHECK(WeakRef, GODOT_API_CLASS(WeakRef));
|
||||
CACHE_CLASS_AND_CHECK(Array, GODOT_API_CLASS(Array));
|
||||
CACHE_CLASS_AND_CHECK(Dictionary, GODOT_API_CLASS(Dictionary));
|
||||
CACHE_CLASS_AND_CHECK(Array, GODOT_API_NS_CLAS(BINDINGS_NAMESPACE_COLLECTIONS, Array));
|
||||
CACHE_CLASS_AND_CHECK(Dictionary, GODOT_API_NS_CLAS(BINDINGS_NAMESPACE_COLLECTIONS, Dictionary));
|
||||
CACHE_CLASS_AND_CHECK(MarshalUtils, GODOT_API_CLASS(MarshalUtils));
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
|
@ -234,8 +235,8 @@ void update_godot_api_cache() {
|
|||
CACHE_FIELD_AND_CHECK(NodePath, ptr, CACHED_CLASS(NodePath)->get_field(BINDINGS_PTR_FIELD));
|
||||
CACHE_FIELD_AND_CHECK(RID, ptr, CACHED_CLASS(RID)->get_field(BINDINGS_PTR_FIELD));
|
||||
|
||||
CACHE_METHOD_THUNK_AND_CHECK(Array, GetPtr, (Array_GetPtr)GODOT_API_CLASS(Array)->get_method_thunk("GetPtr", 0));
|
||||
CACHE_METHOD_THUNK_AND_CHECK(Dictionary, GetPtr, (Dictionary_GetPtr)GODOT_API_CLASS(Dictionary)->get_method_thunk("GetPtr", 0));
|
||||
CACHE_METHOD_THUNK_AND_CHECK(Array, GetPtr, (Array_GetPtr)GODOT_API_NS_CLAS(BINDINGS_NAMESPACE_COLLECTIONS, Array)->get_method_thunk("GetPtr", 0));
|
||||
CACHE_METHOD_THUNK_AND_CHECK(Dictionary, GetPtr, (Dictionary_GetPtr)GODOT_API_NS_CLAS(BINDINGS_NAMESPACE_COLLECTIONS, Dictionary)->get_method_thunk("GetPtr", 0));
|
||||
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, IsArrayGenericType, (IsArrayGenericType)GODOT_API_CLASS(MarshalUtils)->get_method_thunk("IsArrayGenericType", 1));
|
||||
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, IsDictionaryGenericType, (IsDictionaryGenericType)GODOT_API_CLASS(MarshalUtils)->get_method_thunk("IsDictionaryGenericType", 1));
|
||||
CACHE_METHOD_THUNK_AND_CHECK(SignalAwaiter, SignalCallback, (SignalAwaiter_SignalCallback)GODOT_API_CLASS(SignalAwaiter)->get_method_thunk("SignalCallback", 1));
|
||||
|
|
Loading…
Reference in New Issue