summaryrefslogtreecommitdiffstats
path: root/binding_generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'binding_generator.py')
-rw-r--r--binding_generator.py69
1 files changed, 5 insertions, 64 deletions
diff --git a/binding_generator.py b/binding_generator.py
index 9c3284d..eb201ff 100644
--- a/binding_generator.py
+++ b/binding_generator.py
@@ -131,8 +131,6 @@ def get_file_list(api_filepath, output_dir, headers=False, sources=False):
if sources:
utility_functions_source_path = source_gen_folder / "variant" / "utility_functions.cpp"
files.append(str(utility_functions_source_path.as_posix()))
- register_engine_classes_source_path = source_gen_folder / "register_engine_classes.cpp"
- files.append(str(register_engine_classes_source_path.as_posix()))
return files
@@ -520,7 +518,10 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
# Special cases.
if class_name == "String" or class_name == "StringName" or class_name == "NodePath":
- result.append(f"\t{class_name}(const char *from);")
+ if class_name == "StringName":
+ result.append(f"\t{class_name}(const char *from, bool p_static = false);")
+ else:
+ result.append(f"\t{class_name}(const char *from);")
result.append(f"\t{class_name}(const wchar_t *from);")
result.append(f"\t{class_name}(const char16_t *from);")
result.append(f"\t{class_name}(const char32_t *from);")
@@ -1207,10 +1208,6 @@ def generate_engine_classes_bindings(api, output_dir, use_template_get_node):
generate_engine_class_source(class_api, used_classes, fully_used_classes, use_template_get_node)
)
- register_engine_classes_filename = Path(output_dir) / "src" / "register_engine_classes.cpp"
- with register_engine_classes_filename.open("w+", encoding="utf-8") as source_file:
- source_file.write(generate_register_engine_classes_source(api))
-
for native_struct in api["native_structures"]:
struct_name = native_struct["name"]
snake_struct_name = camel_to_snake(struct_name)
@@ -1285,7 +1282,7 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
result.append(f"#include <godot_cpp/{get_include_path(included)}>")
if class_name == "EditorPlugin":
- result.append("#include <godot_cpp/templates/vector.hpp>")
+ result.append("#include <godot_cpp/classes/editor_plugin_registration.hpp>")
if len(fully_used_classes) > 0:
result.append("")
@@ -1437,30 +1434,6 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
result.append("};")
result.append("")
- if class_name == "EditorPlugin":
- result.append("class EditorPlugins {")
- result.append("private:")
- result.append("\tstatic Vector<StringName> plugin_classes;")
- result.append("")
- result.append("public:")
- result.append("\tstatic void add_plugin_class(const StringName &p_class_name);")
- result.append("\tstatic void remove_plugin_class(const StringName &p_class_name);")
- result.append("\tstatic void deinitialize(GDExtensionInitializationLevel p_level);")
- result.append("")
-
- result.append("\ttemplate <class T>")
- result.append("\tstatic void add_by_type() {")
- result.append("\t\tadd_plugin_class(T::get_class_static());")
- result.append("\t}")
-
- result.append("\ttemplate <class T>")
- result.append("\tstatic void remove_by_type() {")
- result.append("\t\tremove_plugin_class(T::get_class_static());")
- result.append("\t}")
-
- result.append("};")
- result.append("")
-
result.append("} // namespace godot")
result.append("")
@@ -1685,38 +1658,6 @@ def generate_engine_class_source(class_api, used_classes, fully_used_classes, us
return "\n".join(result)
-def generate_register_engine_classes_source(api):
- includes = []
- registrations = []
-
- for class_api in api["classes"]:
- if class_api["name"] == "ClassDB":
- continue
-
- class_name = class_api["name"]
- snake_class_name = camel_to_snake(class_name)
-
- includes.append(f"#include <godot_cpp/classes/{snake_class_name}.hpp>")
- registrations.append(f"\tClassDB::register_engine_class<{class_name}>();")
-
- result = []
- add_header(f"register_engine_classes.cpp", result)
-
- result.append("#include <godot_cpp/godot.hpp>")
- result.append("")
- result = result + includes
- result.append("")
- result.append("namespace godot {")
- result.append("")
- result.append("void GDExtensionBinding::register_engine_classes() {")
- result = result + registrations
- result.append("}")
- result.append("")
- result.append("} // namespace godot ")
-
- return "\n".join(result)
-
-
def generate_global_constants(api, output_dir):
include_gen_folder = Path(output_dir) / "include" / "godot_cpp" / "classes"
source_gen_folder = Path(output_dir) / "src" / "classes"