Skip to content

Commit 34dbd7f

Browse files
committed
Cleanups
1 parent 1d4b42a commit 34dbd7f

5 files changed

Lines changed: 21 additions & 59 deletions

File tree

godot-codegen/src/generator/extension_interface.rs

Lines changed: 0 additions & 33 deletions
This file was deleted.

godot-codegen/src/generator/header_codegen.rs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,16 @@ pub fn generate_interface_impl(header: &HeaderJson) -> TokenStream {
161161
}
162162
}
163163

164-
/// Generate complete `gdextension_interface.rs` content from JSON: all type definitions.
164+
/// Generate complete `gdextension_interface.rs` content from JSON.
165165
///
166166
/// This replaces the bindgen-generated file. Produces enums, structs, handles,
167-
/// aliases, function pointer type definitions, and per-interface-function typedefs
168-
/// from the JSON header model.
167+
/// aliases, function pointer type definitions, per-interface-function typedefs,
168+
/// the `GDExtensionInterface` struct, and its `load()` impl — all in one module.
169169
pub fn generate_sys_gdextension_interface_from_json(header: &HeaderJson) -> TokenStream {
170170
let header_types = generate_header_types(header);
171171
let interface_typedefs = generate_interface_typedefs(header);
172+
let struct_def = generate_interface_struct(header);
173+
let load_impl = generate_interface_impl(header);
172174

173175
quote! {
174176
/// UTF-16 character type.
@@ -184,19 +186,6 @@ pub fn generate_sys_gdextension_interface_from_json(header: &HeaderJson) -> Toke
184186

185187
// Per-interface-function typedefs (bare function pointers, version-gated).
186188
#interface_typedefs
187-
}
188-
}
189-
190-
/// Generate complete `interface.rs` content from JSON: struct definition + impl with `load()` method.
191-
///
192-
/// Includes `use crate::*;` so that GDExtension types (defined in the sibling `gdextension_interface` module) resolve correctly.
193-
/// The per-function typedefs are generated in `gdextension_interface.rs` alongside other type definitions.
194-
pub fn generate_sys_interface_from_json(header: &HeaderJson) -> TokenStream {
195-
let struct_def = generate_interface_struct(header);
196-
let load_impl = generate_interface_impl(header);
197-
198-
quote! {
199-
use crate::*;
200189

201190
#struct_def
202191
#load_impl

godot-codegen/src/generator/mod.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use quote::quote;
1212
use crate::SubmitFn;
1313
use crate::context::Context;
1414
use crate::models::domain::{ClassCodegenLevel, ExtensionApi};
15+
use crate::models::header_json::HeaderJson;
1516

1617
pub mod builtins;
1718
pub mod central_files;
@@ -20,7 +21,6 @@ pub mod constants;
2021
pub mod default_parameters;
2122
pub mod docs;
2223
pub mod enums;
23-
pub mod extension_interface;
2424
pub mod functions_common;
2525
pub mod gdext_build_struct;
2626
pub mod header_codegen;
@@ -56,7 +56,6 @@ pub fn generate_sys_module_file(sys_gen_path: &Path, submit_fn: &mut SubmitFn) {
5656

5757
pub mod central;
5858
pub mod gdextension_interface;
59-
pub mod interface;
6059
};
6160

6261
submit_fn(sys_gen_path.join("mod.rs"), code);
@@ -72,6 +71,19 @@ pub fn generate_sys_central_file(
7271
submit_fn(sys_gen_path.join("central.rs"), sys_code);
7372
}
7473

74+
/// Generate the `gdextension_interface.rs` module from JSON.
75+
///
76+
/// Produces all type definitions, per-interface-function typedefs, the `GDExtensionInterface` struct,
77+
/// and its `load()` impl.
78+
pub fn generate_sys_gdextension_interface_file(
79+
header: &HeaderJson,
80+
sys_gen_path: &Path,
81+
submit_fn: &mut SubmitFn,
82+
) {
83+
let code = header_codegen::generate_sys_gdextension_interface_from_json(header);
84+
submit_fn(sys_gen_path.join("gdextension_interface.rs"), code);
85+
}
86+
7587
pub fn generate_sys_classes_file(
7688
api: &ExtensionApi,
7789
sys_gen_path: &Path,

godot-codegen/src/lib.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,13 @@ use proc_macro2::TokenStream;
3131
use crate::context::Context;
3232
use crate::generator::builtins::generate_builtin_class_files;
3333
use crate::generator::classes::generate_class_files;
34-
use crate::generator::extension_interface::{
35-
generate_sys_gdextension_interface_file, generate_sys_interface_file,
36-
};
3734
use crate::generator::native_structures::generate_native_structures_files;
3835
use crate::generator::utility_functions::generate_utilities_file;
3936
use crate::generator::{
4037
generate_core_central_file, generate_core_mod_file, generate_sys_builtin_lifecycle_file,
4138
generate_sys_builtin_methods_file, generate_sys_central_file, generate_sys_classes_file,
42-
generate_sys_module_file, generate_sys_utilities_file, virtual_definitions,
39+
generate_sys_gdextension_interface_file, generate_sys_module_file, generate_sys_utilities_file,
40+
virtual_definitions,
4341
};
4442
use crate::models::domain::{ApiView, ExtensionApi};
4543
use crate::models::header_json::HeaderJson;
@@ -136,9 +134,6 @@ pub fn generate_sys_files(sys_gen_path: &Path, watch: &mut godot_bindings::StopW
136134
generate_sys_gdextension_interface_file(&header_json, sys_gen_path, &mut submit_fn);
137135
watch.record("generate_gdextension_interface_file");
138136

139-
generate_sys_interface_file(&header_json, sys_gen_path, &mut submit_fn);
140-
watch.record("generate_interface_file");
141-
142137
generate_sys_module_file(sys_gen_path, &mut submit_fn);
143138
watch.record("generate_module_file");
144139

godot-ffi/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ use std::sync::atomic::{AtomicBool, Ordering};
9090
pub use extras::*;
9191
pub use r#gen::central::*;
9292
pub use r#gen::gdextension_interface::*;
93-
pub use r#gen::interface::*;
9493
// Method tables
9594
pub use r#gen::table_builtins::*;
9695
pub use r#gen::table_builtins_lifecycle::*;

0 commit comments

Comments
 (0)