Explorar o código

C#: Skip methods with pointer parameters

Raul Santos %!s(int64=2) %!d(string=hai) anos
pai
achega
ab5e532f1a
Modificáronse 1 ficheiros con 17 adicións e 0 borrados
  1. 17 0
      modules/mono/editor/bindings_generator.cpp

+ 17 - 0
modules/mono/editor/bindings_generator.cpp

@@ -2795,6 +2795,18 @@ bool BindingsGenerator::_arg_default_value_is_assignable_to_type(const Variant &
 	return false;
 }
 
+bool method_has_ptr_parameter(MethodInfo p_method_info) {
+	if (p_method_info.return_val.type == Variant::INT && p_method_info.return_val.hint == PROPERTY_HINT_INT_IS_POINTER) {
+		return true;
+	}
+	for (PropertyInfo arg : p_method_info.arguments) {
+		if (arg.type == Variant::INT && arg.hint == PROPERTY_HINT_INT_IS_POINTER) {
+			return true;
+		}
+	}
+	return false;
+}
+
 bool BindingsGenerator::_populate_object_type_interfaces() {
 	obj_types.clear();
 
@@ -2938,6 +2950,11 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
 				continue;
 			}
 
+			if (method_has_ptr_parameter(method_info)) {
+				// Pointers are not supported.
+				continue;
+			}
+
 			MethodInterface imethod;
 			imethod.name = method_info.name;
 			imethod.cname = cname;