Skip to content

Commit 6d7c734

Browse files
committed
Refactoring of export::macros.rs
- Reduction of codes. - Normalize comma positions.
1 parent badbdbe commit 6d7c734

File tree

1 file changed

+54
-135
lines changed

1 file changed

+54
-135
lines changed

gdnative-core/src/export/macros.rs

Lines changed: 54 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ macro_rules! godot_wrap_method_inner {
3737
$is_deref_return:ident,
3838
$map_method:ident,
3939
fn $method_name:ident(
40-
$self:ident,
41-
$owner:ident : $owner_ty:ty
42-
$(,$pname:ident : $pty:ty)*
40+
$self:ident
41+
, $owner:ident : $owner_ty:ty
42+
$(, $pname:ident : $pty:ty)*
4343
$(, #[opt] $opt_pname:ident : $opt_pty:ty)*
4444
) -> $retty:ty
4545
) => {
@@ -97,6 +97,17 @@ macro_rules! godot_wrap_method_inner {
9797
};
9898
}
9999

100+
#[doc(hidden)]
101+
#[macro_export]
102+
macro_rules! godot_wrap_method_return_type {
103+
() => {
104+
()
105+
};
106+
($retty:ty) => {
107+
$retty: ty
108+
};
109+
}
110+
100111
/// Convenience macro to wrap an object's method into a function pointer
101112
/// that can be passed to the engine when registering a class.
102113
#[macro_export]
@@ -106,187 +117,95 @@ macro_rules! godot_wrap_method {
106117
$type_name:ty,
107118
$is_deref_return:ident,
108119
fn $method_name:ident(
109-
&mut $self:ident,
110-
$owner:ident : $owner_ty:ty
111-
$(,$pname:ident : $pty:ty)*
112-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
120+
&mut $self:ident
121+
, $owner:ident : $owner_ty:ty
122+
$(, $pname:ident : $pty:ty)*
123+
$(, #[opt] $opt_pname:ident : $opt_pty:ty)*
113124
$(,)?
114-
) -> $retty:ty
125+
) $(-> $retty:ty)?
115126
) => {
116127
$crate::godot_wrap_method_inner!(
117128
$type_name,
118129
$is_deref_return,
119130
map_mut,
120131
fn $method_name(
121-
$self,
122-
$owner: $owner_ty
123-
$(,$pname : $pty)*
124-
$(,#[opt] $opt_pname : $opt_pty)*
125-
) -> $retty
132+
$self
133+
, $owner : $owner_ty
134+
$(, $pname : $pty)*
135+
$(, #[opt] $opt_pname : $opt_pty)*
136+
) -> godot_wrap_method_return_type!($($retty)?)
126137
)
127138
};
128139
// immutable
129140
(
130141
$type_name:ty,
131142
$is_deref_return:ident,
132143
fn $method_name:ident(
133-
& $self:ident,
134-
$owner:ident : $owner_ty:ty
135-
$(,$pname:ident : $pty:ty)*
136-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
144+
& $self:ident
145+
, $owner:ident : $owner_ty:ty
146+
$(, $pname:ident : $pty:ty)*
147+
$(, #[opt] $opt_pname:ident : $opt_pty:ty)*
137148
$(,)?
138-
) -> $retty:ty
149+
) $(-> $retty:ty)?
139150
) => {
140151
$crate::godot_wrap_method_inner!(
141152
$type_name,
142153
$is_deref_return,
143154
map,
144155
fn $method_name(
145-
$self,
146-
$owner: $owner_ty
147-
$(,$pname : $pty)*
148-
$(,#[opt] $opt_pname : $opt_pty)*
149-
) -> $retty
156+
$self
157+
, $owner : $owner_ty
158+
$(, $pname : $pty)*
159+
$(, #[opt] $opt_pname : $opt_pty)*
160+
) -> godot_wrap_method_return_type!($($retty)?)
150161
)
151162
};
152163
// owned
153164
(
154165
$type_name:ty,
155166
$is_deref_return:ident,
156167
fn $method_name:ident(
157-
mut $self:ident,
158-
$owner:ident : $owner_ty:ty
159-
$(,$pname:ident : $pty:ty)*
160-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
168+
mut $self:ident
169+
, $owner:ident : $owner_ty:ty
170+
$(, $pname:ident : $pty:ty)*
171+
$(, #[opt] $opt_pname:ident : $opt_pty:ty)*
161172
$(,)?
162-
) -> $retty:ty
173+
) $(-> $retty:ty)?
163174
) => {
164175
$crate::godot_wrap_method_inner!(
165176
$type_name,
166177
$is_deref_return,
167178
map_owned,
168179
fn $method_name(
169-
$self,
170-
$owner: $owner_ty
171-
$(,$pname : $pty)*
172-
$(,#[opt] $opt_pname : $opt_pty)*
173-
) -> $retty
180+
$self
181+
, $owner : $owner_ty
182+
$(, $pname : $pty)*
183+
$(, #[opt] $opt_pname : $opt_pty)*
184+
) -> godot_wrap_method_return_type!($($retty)?)
174185
)
175186
};
176187
// owned
177188
(
178189
$type_name:ty,
179190
$is_deref_return:ident,
180191
fn $method_name:ident(
181-
$self:ident,
182-
$owner:ident : $owner_ty:ty
183-
$(,$pname:ident : $pty:ty)*
184-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
192+
$self:ident
193+
, $owner:ident : $owner_ty:ty
194+
$(, $pname:ident : $pty:ty)*
195+
$(, #[opt] $opt_pname:ident : $opt_pty:ty)*
185196
$(,)?
186-
) -> $retty:ty
197+
) $(-> $retty:ty)?
187198
) => {
188199
$crate::godot_wrap_method_inner!(
189200
$type_name,
190201
$is_deref_return,
191202
map_owned,
192203
fn $method_name(
193-
$self,
194-
$owner: $owner_ty
195-
$(,$pname : $pty)*
196-
$(,#[opt] $opt_pname : $opt_pty)*
197-
) -> $retty
198-
)
199-
};
200-
// mutable without return type
201-
(
202-
$type_name:ty,
203-
$is_deref_return:ident,
204-
fn $method_name:ident(
205-
&mut $self:ident,
206-
$owner:ident : $owner_ty:ty
207-
$(,$pname:ident : $pty:ty)*
208-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
209-
$(,)?
210-
)
211-
) => {
212-
$crate::godot_wrap_method!(
213-
$type_name,
214-
$is_deref_return,
215-
fn $method_name(
216-
&mut $self,
217-
$owner: $owner_ty
218-
$(,$pname : $pty)*
219-
$(,#[opt] $opt_pname : $opt_pty)*
220-
) -> ()
221-
)
222-
};
223-
// immutable without return type
224-
(
225-
$type_name:ty,
226-
$is_deref_return:ident,
227-
fn $method_name:ident(
228-
& $self:ident,
229-
$owner:ident : $owner_ty:ty
230-
$(,$pname:ident : $pty:ty)*
231-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
232-
$(,)?
233-
)
234-
) => {
235-
$crate::godot_wrap_method!(
236-
$type_name,
237-
$is_deref_return,
238-
fn $method_name(
239-
& $self,
240-
$owner: $owner_ty
241-
$(,$pname : $pty)*
242-
$(,#[opt] $opt_pname : $opt_pty)*
243-
) -> ()
244-
)
245-
};
246-
// owned without return type
247-
(
248-
$type_name:ty,
249-
$is_deref_return:ident,
250-
fn $method_name:ident(
251-
mut $self:ident,
252-
$owner:ident : $owner_ty:ty
253-
$(,$pname:ident : $pty:ty)*
254-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
255-
$(,)?
256-
)
257-
) => {
258-
$crate::godot_wrap_method!(
259-
$type_name,
260-
$is_deref_return,
261-
fn $method_name(
262-
$self,
263-
$owner: $owner_ty
264-
$(,$pname : $pty)*
265-
$(,#[opt] $opt_pname : $opt_pty)*
266-
) -> ()
267-
)
268-
};
269-
// owned without return type
270-
(
271-
$type_name:ty,
272-
$is_deref_return:ident,
273-
fn $method_name:ident(
274-
$self:ident,
275-
$owner:ident : $owner_ty:ty
276-
$(,$pname:ident : $pty:ty)*
277-
$(,#[opt] $opt_pname:ident : $opt_pty:ty)*
278-
$(,)?
279-
)
280-
) => {
281-
$crate::godot_wrap_method!(
282-
$type_name,
283-
$is_deref_return,
284-
fn $method_name(
285-
$self,
286-
$owner: $owner_ty
287-
$(,$pname : $pty)*
288-
$(,#[opt] $opt_pname : $opt_pty)*
289-
) -> ()
204+
$self
205+
, $owner : $owner_ty
206+
$(, $pname : $pty)*
207+
$(, #[opt] $opt_pname : $opt_pty)*
208+
) -> godot_wrap_method_return_type!($($retty)?)
290209
)
291210
};
292211
}

0 commit comments

Comments
 (0)