Skip to content

Commit f02b07b

Browse files
committed
Prefix NativeClass::{init, register_properties, register} with nativeclass_
Avoids naming conflicts/confusion with similarly named methods provided by the user
1 parent 9c745b0 commit f02b07b

File tree

10 files changed

+24
-32
lines changed

10 files changed

+24
-32
lines changed

gdnative-async/src/rt/bridge.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ impl NativeClass for SignalBridge {
5252
type Base = Reference;
5353
type UserData = ArcData<SignalBridge>;
5454

55-
fn register_properties(_builder: &ClassBuilder<Self>) {}
55+
fn nativeclass_register_properties(_builder: &ClassBuilder<Self>) {}
5656
}
5757

5858
impl SignalBridge {
@@ -128,7 +128,7 @@ impl Method<SignalBridge> for OnSignalFn {
128128
}
129129

130130
impl NativeClassMethods for SignalBridge {
131-
fn register(builder: &ClassBuilder<Self>) {
131+
fn nativeclass_register(builder: &ClassBuilder<Self>) {
132132
builder.method("_on_signal", OnSignalFn).done_stateless();
133133
}
134134
}

gdnative-async/src/rt/func_state.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl NativeClass for FuncState {
2525
type Base = Reference;
2626
type UserData = LocalCellData<FuncState>;
2727

28-
fn register_properties(builder: &ClassBuilder<Self>) {
28+
fn nativeclass_register_properties(builder: &ClassBuilder<Self>) {
2929
builder
3030
.signal("completed")
3131
.with_param_untyped("value")
@@ -153,7 +153,7 @@ impl StaticArgsMethod<FuncState> for ResumeFn {
153153
}
154154

155155
impl NativeClassMethods for FuncState {
156-
fn register(builder: &ClassBuilder<Self>) {
156+
fn nativeclass_register(builder: &ClassBuilder<Self>) {
157157
builder
158158
.method("is_valid", StaticArgs::new(IsValidFn))
159159
.done_stateless();

gdnative-core/src/export/class.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,6 @@ pub trait NativeClass: Sized + 'static {
4343
/// See module-level documentation on `user_data` for more info.
4444
type UserData: UserData<Target = Self>;
4545

46-
// TODO(0.11) bugfix for https://github.com/godot-rust/godot-rust/issues/885
47-
// * Rename init, register_properties, register by prefixing them with "nativeclass_"
48-
// * Mark them as #[doc(hidden)]
49-
// * Discourage manual NativeClass and NativeClassMethod impls
50-
5146
/// Function that creates a value of `Self`, used for the script-instance. The default
5247
/// implementation simply panics.
5348
///
@@ -58,8 +53,7 @@ pub trait NativeClass: Sized + 'static {
5853
/// of such scripts can only be created from Rust using `Instance::emplace`. See
5954
/// documentation on `Instance::emplace` for an example.
6055
#[inline]
61-
#[deprecated = "This method will be removed from the public API."]
62-
fn init(_owner: TRef<'_, Self::Base, Shared>) -> Self {
56+
fn nativeclass_init(_owner: TRef<'_, Self::Base, Shared>) -> Self {
6357
panic!(
6458
"{} does not have a zero-argument constructor",
6559
class_registry::class_name_or_default::<Self>()
@@ -68,8 +62,7 @@ pub trait NativeClass: Sized + 'static {
6862

6963
/// Register any exported properties to Godot.
7064
#[inline]
71-
#[deprecated = "This method will be removed from the public API."]
72-
fn register_properties(_builder: &ClassBuilder<Self>) {}
65+
fn nativeclass_register_properties(_builder: &ClassBuilder<Self>) {}
7366

7467
/// Convenience method to create an `Instance<Self, Unique>`. This is a new `Self::Base`
7568
/// with the script attached.
@@ -119,9 +112,7 @@ pub trait StaticallyNamed: NativeClass {
119112
pub trait NativeClassMethods: NativeClass {
120113
/// Function that registers all exposed methods to Godot.
121114
///
122-
// TODO see comment in NativeClass
123-
#[deprecated = "This method will be removed from the public API."]
124-
fn register(builder: &ClassBuilder<Self>);
115+
fn nativeclass_register(builder: &ClassBuilder<Self>);
125116
}
126117

127118
/// Trait for types that can be used as the `owner` arguments of exported methods. This trait

gdnative-core/src/init/init_handle.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,9 @@ impl InitHandle {
118118
};
119119

120120
let val = match panic::catch_unwind(AssertUnwindSafe(|| {
121-
emplace::take()
122-
.unwrap_or_else(|| C::init(TRef::new(C::Base::cast_ref(owner))))
121+
emplace::take().unwrap_or_else(|| {
122+
C::nativeclass_init(TRef::new(C::Base::cast_ref(owner)))
123+
})
123124
})) {
124125
Ok(val) => val,
125126
Err(_) => {
@@ -193,10 +194,10 @@ impl InitHandle {
193194

194195
let builder = ClassBuilder::new(self.handle, c_class_name);
195196

196-
C::register_properties(&builder);
197+
C::nativeclass_register_properties(&builder);
197198

198199
// register methods
199-
C::register(&builder);
200+
C::nativeclass_register(&builder);
200201
}
201202
}
202203
}

gdnative-derive/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ mod variant;
4848
/// const CLASS_NAME: &'static str = "Foo";
4949
/// }
5050
/// impl gdnative::export::NativeClassMethods for Foo {
51-
/// fn register(builder: &ClassBuilder<Self>) {
51+
/// fn nativeclass_register(builder: &ClassBuilder<Self>) {
5252
/// use gdnative::export::*;
5353
/// builder.method("foo", gdnative::export::godot_wrap_method!(Foo, false, fn foo(&self, #[base] _base: &Reference, bar: i64) -> i64))
5454
/// .with_rpc_mode(RpcMode::Disabled)

gdnative-derive/src/methods.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ pub(crate) fn derive_methods(item_impl: ItemImpl) -> TokenStream2 {
182182

183183
#derived
184184
impl gdnative::export::NativeClassMethods for #class_name {
185-
fn register(#builder: &::gdnative::export::ClassBuilder<Self>) {
185+
fn nativeclass_register(#builder: &::gdnative::export::ClassBuilder<Self>) {
186186
use gdnative::export::*;
187187

188188
#(#methods)*

gdnative-derive/src/native_script/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub(crate) fn impl_empty_nativeclass(derive_input: &DeriveInput) -> TokenStream2
3838
type Base = ::gdnative::api::Object;
3939
type UserData = ::gdnative::export::user_data::LocalCellData<Self>;
4040

41-
fn init(owner: ::gdnative::object::TRef<'_, Self::Base, Shared>) -> Self {
41+
fn nativeclass_init(owner: ::gdnative::object::TRef<'_, Self::Base, Shared>) -> Self {
4242
unimplemented!()
4343
}
4444
}
@@ -165,7 +165,7 @@ pub(crate) fn derive_native_class(derive_input: &DeriveInput) -> Result<TokenStr
165165
None
166166
} else {
167167
Some(quote! {
168-
fn init(owner: ::gdnative::object::TRef<Self::Base>) -> Self {
168+
fn nativeclass_init(owner: ::gdnative::object::TRef<Self::Base>) -> Self {
169169
Self::new(::gdnative::export::OwnerArg::from_safe_ref(owner))
170170
}
171171
})
@@ -179,7 +179,7 @@ pub(crate) fn derive_native_class(derive_input: &DeriveInput) -> Result<TokenStr
179179

180180
#init
181181

182-
fn register_properties(builder: &::gdnative::export::ClassBuilder<Self>) {
182+
fn nativeclass_register_properties(builder: &::gdnative::export::ClassBuilder<Self>) {
183183
#(#properties)*;
184184
#register_callback
185185
}

test/src/test_register.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ struct RegisterSignal;
2929
impl NativeClass for RegisterSignal {
3030
type Base = Reference;
3131
type UserData = user_data::Aether<RegisterSignal>;
32-
fn init(_owner: TRef<Reference>) -> RegisterSignal {
32+
fn nativeclass_init(_owner: TRef<Reference>) -> RegisterSignal {
3333
RegisterSignal
3434
}
35-
fn register_properties(builder: &ClassBuilder<Self>) {
35+
fn nativeclass_register_properties(builder: &ClassBuilder<Self>) {
3636
builder
3737
.signal("progress")
3838
.with_param("amount", VariantType::I64)
@@ -54,10 +54,10 @@ struct RegisterProperty {
5454
impl NativeClass for RegisterProperty {
5555
type Base = Reference;
5656
type UserData = user_data::MutexData<RegisterProperty>;
57-
fn init(_owner: TRef<Reference>) -> RegisterProperty {
57+
fn nativeclass_init(_owner: TRef<Reference>) -> RegisterProperty {
5858
RegisterProperty { value: 42 }
5959
}
60-
fn register_properties(builder: &ClassBuilder<Self>) {
60+
fn nativeclass_register_properties(builder: &ClassBuilder<Self>) {
6161
builder
6262
.property("value")
6363
.with_default(42)

test/src/test_return_leak.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl NativeClass for Probe {
2828
type Base = api::AnimationNodeAdd2;
2929
type UserData = user_data::RwLockData<Probe>;
3030

31-
fn register_properties(_builder: &ClassBuilder<Self>) {}
31+
fn nativeclass_register_properties(_builder: &ClassBuilder<Self>) {}
3232
}
3333

3434
impl StaticallyNamed for Probe {

test/src/test_variant_call_args.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ struct VariantCallArgs;
1818
impl NativeClass for VariantCallArgs {
1919
type Base = Reference;
2020
type UserData = user_data::MutexData<VariantCallArgs>;
21-
fn init(_owner: TRef<Reference>) -> VariantCallArgs {
21+
fn nativeclass_init(_owner: TRef<Reference>) -> VariantCallArgs {
2222
VariantCallArgs
2323
}
24-
fn register_properties(_builder: &ClassBuilder<Self>) {}
24+
fn nativeclass_register_properties(_builder: &ClassBuilder<Self>) {}
2525
}
2626

2727
impl StaticallyNamed for VariantCallArgs {

0 commit comments

Comments
 (0)