From 0e5e7432580166a6c7fc75bc35b091b101630d1e Mon Sep 17 00:00:00 2001 From: Lyuma Date: Thu, 2 May 2024 23:38:45 -0700 Subject: [PATCH] Bind compatibility GDExtension methods removed in 88418 These functions were likely not used, but we must ensure they are still bound to ensure API stability. --- core/extension/gdextension.compat.inc | 49 +++++++++++++++++++++++++++ core/extension/gdextension.cpp | 2 ++ core/extension/gdextension.h | 9 +++++ 3 files changed, 60 insertions(+) create mode 100644 core/extension/gdextension.compat.inc diff --git a/core/extension/gdextension.compat.inc b/core/extension/gdextension.compat.inc new file mode 100644 index 000000000000..9dea865dbd4d --- /dev/null +++ b/core/extension/gdextension.compat.inc @@ -0,0 +1,49 @@ +/**************************************************************************/ +/* gdextension.compat.inc */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef DISABLE_DEPRECATED + +Error GDExtension::_open_library_bind_compat_88418(const String &p_path, const String &p_entry_symbol) { + return ERR_UNAVAILABLE; +} + +void GDExtension::_close_library_bind_compat_88418() { +} + +void GDExtension::_initialize_library_bind_compat_88418(InitializationLevel p_level) { +} + +void GDExtension::_bind_compatibility_methods() { + ClassDB::bind_compatibility_method(D_METHOD("open_library", "path", "entry_symbol"), &GDExtension::_open_library_bind_compat_88418); + ClassDB::bind_compatibility_method(D_METHOD("close_library"), &GDExtension::_close_library_bind_compat_88418); + ClassDB::bind_compatibility_method(D_METHOD("initialize_library", "level"), &GDExtension::_initialize_library_bind_compat_88418); +} + +#endif diff --git a/core/extension/gdextension.cpp b/core/extension/gdextension.cpp index 22a5df9935be..bcec9e84f884 100644 --- a/core/extension/gdextension.cpp +++ b/core/extension/gdextension.cpp @@ -29,6 +29,8 @@ /**************************************************************************/ #include "gdextension.h" +#include "gdextension.compat.inc" + #include "core/config/project_settings.h" #include "core/io/dir_access.h" #include "core/object/class_db.h" diff --git a/core/extension/gdextension.h b/core/extension/gdextension.h index 23b1f5120827..e3e8b5749b58 100644 --- a/core/extension/gdextension.h +++ b/core/extension/gdextension.h @@ -136,6 +136,15 @@ class GDExtension : public Resource { INITIALIZATION_LEVEL_EDITOR = GDEXTENSION_INITIALIZATION_EDITOR }; +protected: +#ifndef DISABLE_DEPRECATED + Error _open_library_bind_compat_88418(const String &p_path, const String &p_entry_symbol); + void _close_library_bind_compat_88418(); + void _initialize_library_bind_compat_88418(InitializationLevel p_level); + static void _bind_compatibility_methods(); +#endif + +public: bool is_library_open() const; #ifdef TOOLS_ENABLED