@@ -2,11 +2,10 @@ extern crate proc_macro;
2
2
extern crate syn;
3
3
4
4
use proc_macro:: TokenStream ;
5
- use proc_macro2:: { Ident , Span } ;
6
5
use quote:: quote;
7
6
use syn:: punctuated:: Punctuated ;
8
7
use syn:: token:: Comma ;
9
- use syn:: { parse_macro_input, parse_str, FnArg , ItemFn , NestedMeta , AttributeArgs , Meta } ;
8
+ use syn:: { parse_macro_input, parse_str, FnArg , Ident , ItemFn } ;
10
9
11
10
#[ proc_macro_attribute]
12
11
pub fn php_function ( _attr : TokenStream , input : TokenStream ) -> TokenStream {
@@ -22,8 +21,6 @@ pub fn php_function(_attr: TokenStream, input: TokenStream) -> TokenStream {
22
21
let mut inputs = & mut inputs. clone ( ) ;
23
22
internal_function_parameters ( & mut inputs) ;
24
23
25
- let name = Ident :: new ( & format ! ( "zif_{}" , name) , Span :: call_site ( ) ) ;
26
-
27
24
let result = quote ! {
28
25
#[ no_mangle]
29
26
#( #attrs) *
@@ -39,7 +36,7 @@ pub fn php_function(_attr: TokenStream, input: TokenStream) -> TokenStream {
39
36
pub fn php_minit_function ( _attr : TokenStream , input : TokenStream ) -> TokenStream {
40
37
let input = parse_macro_input ! ( input as ItemFn ) ;
41
38
42
- let name = & zend_module_startup_n ( input. sig . ident . clone ( ) ) ;
39
+ let name = & input. sig . ident ;
43
40
let inputs = & init_func_args ( Punctuated :: new ( ) ) ;
44
41
let inner_inputs = & input. sig . inputs ;
45
42
let ret = & input. sig . output ;
@@ -51,8 +48,8 @@ pub fn php_minit_function(_attr: TokenStream, input: TokenStream) -> TokenStream
51
48
#( #attrs) *
52
49
pub extern "C" fn #name( #inputs) -> :: std:: os:: raw:: c_int {
53
50
unsafe {
54
- :: phper_sys :: zend_register_ini_entries(
55
- INI_ENTRIES . with( |i| i. as_ptr( ) as * const :: phper_sys :: zend_ini_entry_def) ,
51
+ :: phper :: sys :: zend_register_ini_entries(
52
+ INI_ENTRIES . with( |i| i. as_ptr( ) as * const :: phper :: sys :: zend_ini_entry_def) ,
56
53
module_number
57
54
) ;
58
55
}
@@ -62,9 +59,9 @@ pub fn php_minit_function(_attr: TokenStream, input: TokenStream) -> TokenStream
62
59
} ;
63
60
let b: bool = f( ) ;
64
61
if b {
65
- :: phper_sys :: ZEND_RESULT_CODE_SUCCESS
62
+ :: phper :: sys :: ZEND_RESULT_CODE_SUCCESS
66
63
} else {
67
- :: phper_sys :: ZEND_RESULT_CODE_FAILURE
64
+ :: phper :: sys :: ZEND_RESULT_CODE_FAILURE
68
65
}
69
66
}
70
67
} ;
@@ -76,7 +73,7 @@ pub fn php_minit_function(_attr: TokenStream, input: TokenStream) -> TokenStream
76
73
pub fn php_mshutdown_function ( _attr : TokenStream , input : TokenStream ) -> TokenStream {
77
74
let input = parse_macro_input ! ( input as ItemFn ) ;
78
75
79
- let name = & zend_module_shutdown_n ( input. sig . ident . clone ( ) ) ;
76
+ let name = & input. sig . ident ;
80
77
let inputs = & shutdown_func_args ( Punctuated :: new ( ) ) ;
81
78
let inner_inputs = & input. sig . inputs ;
82
79
let ret = & input. sig . output ;
@@ -88,17 +85,17 @@ pub fn php_mshutdown_function(_attr: TokenStream, input: TokenStream) -> TokenSt
88
85
#( #attrs) *
89
86
pub extern "C" fn #name( #inputs) -> :: std:: os:: raw:: c_int {
90
87
unsafe {
91
- :: phper_sys :: zend_unregister_ini_entries( module_number) ;
88
+ :: phper :: sys :: zend_unregister_ini_entries( module_number) ;
92
89
}
93
90
94
91
let f = |#inner_inputs| #ret {
95
92
#body
96
93
} ;
97
94
let b: bool = f( ) ;
98
95
if b {
99
- :: phper_sys :: ZEND_RESULT_CODE_SUCCESS
96
+ :: phper :: sys :: ZEND_RESULT_CODE_SUCCESS
100
97
} else {
101
- :: phper_sys :: ZEND_RESULT_CODE_FAILURE
98
+ :: phper :: sys :: ZEND_RESULT_CODE_FAILURE
102
99
}
103
100
}
104
101
} ;
@@ -110,7 +107,7 @@ pub fn php_mshutdown_function(_attr: TokenStream, input: TokenStream) -> TokenSt
110
107
pub fn php_rinit_function ( _attr : TokenStream , input : TokenStream ) -> TokenStream {
111
108
let input = parse_macro_input ! ( input as ItemFn ) ;
112
109
113
- let name = & zend_module_activate_n ( input. sig . ident . clone ( ) ) ;
110
+ let name = & input. sig . ident ;
114
111
let inputs = & init_func_args ( Punctuated :: new ( ) ) ;
115
112
let inner_inputs = & input. sig . inputs ;
116
113
let ret = & input. sig . output ;
@@ -126,9 +123,9 @@ pub fn php_rinit_function(_attr: TokenStream, input: TokenStream) -> TokenStream
126
123
}
127
124
let b: bool = #name( ) ;
128
125
if b {
129
- :: phper_sys :: ZEND_RESULT_CODE_SUCCESS
126
+ :: phper :: sys :: ZEND_RESULT_CODE_SUCCESS
130
127
} else {
131
- :: phper_sys :: ZEND_RESULT_CODE_FAILURE
128
+ :: phper :: sys :: ZEND_RESULT_CODE_FAILURE
132
129
}
133
130
}
134
131
} ;
@@ -137,10 +134,10 @@ pub fn php_rinit_function(_attr: TokenStream, input: TokenStream) -> TokenStream
137
134
}
138
135
139
136
#[ proc_macro_attribute]
140
- pub fn php_rshutdown_function ( _attr : TokenStream , mut input : TokenStream ) -> TokenStream {
137
+ pub fn php_rshutdown_function ( _attr : TokenStream , input : TokenStream ) -> TokenStream {
141
138
let input = parse_macro_input ! ( input as ItemFn ) ;
142
139
143
- let name = & zend_module_deactivate_n ( input. sig . ident . clone ( ) ) ;
140
+ let name = & input. sig . ident ;
144
141
let inputs = & init_func_args ( Punctuated :: new ( ) ) ;
145
142
let inner_inputs = & input. sig . inputs ;
146
143
let ret = & input. sig . output ;
@@ -156,9 +153,9 @@ pub fn php_rshutdown_function(_attr: TokenStream, mut input: TokenStream) -> Tok
156
153
}
157
154
let b: bool = #name( ) ;
158
155
if b {
159
- :: phper_sys :: ZEND_RESULT_CODE_SUCCESS
156
+ :: phper :: sys :: ZEND_RESULT_CODE_SUCCESS
160
157
} else {
161
- :: phper_sys :: ZEND_RESULT_CODE_FAILURE
158
+ :: phper :: sys :: ZEND_RESULT_CODE_FAILURE
162
159
}
163
160
}
164
161
} ;
@@ -170,7 +167,7 @@ pub fn php_rshutdown_function(_attr: TokenStream, mut input: TokenStream) -> Tok
170
167
pub fn php_minfo_function ( _attr : TokenStream , input : TokenStream ) -> TokenStream {
171
168
let input = parse_macro_input ! ( input as ItemFn ) ;
172
169
173
- let name = & zend_module_info_n ( input. sig . ident . clone ( ) ) ;
170
+ let name = & input. sig . ident ;
174
171
let inputs = & zend_module_info_func_args ( Punctuated :: new ( ) ) ;
175
172
let inner_inputs = & input. sig . inputs ;
176
173
let ret = & input. sig . output ;
@@ -191,14 +188,23 @@ pub fn php_minfo_function(_attr: TokenStream, input: TokenStream) -> TokenStream
191
188
result. into ( )
192
189
}
193
190
194
- //#[proc_macro_attribute]
195
- //pub fn php_ini(_attr: TokenStream, input: TokenStream) -> TokenStream {
196
- // input
197
- //}
191
+ #[ proc_macro]
192
+ pub fn zend_get_module ( input : TokenStream ) -> TokenStream {
193
+ let name = parse_macro_input ! ( input as Ident ) ;
194
+
195
+ let result = quote ! {
196
+ #[ no_mangle]
197
+ pub extern "C" fn get_module( ) -> * const :: phper:: sys:: zend_module_entry {
198
+ #name. 0
199
+ }
200
+ } ;
201
+
202
+ result. into ( )
203
+ }
198
204
199
205
fn internal_function_parameters ( inputs : & mut Punctuated < FnArg , Comma > ) {
200
- inputs. push ( parse_str ( "execute_data: *mut ::phper_sys ::zend_execute_data" ) . unwrap ( ) ) ;
201
- inputs. push ( parse_str ( "return_value: *mut ::phper_sys ::zval" ) . unwrap ( ) ) ;
206
+ inputs. push ( parse_str ( "execute_data: *mut ::phper::sys ::zend_execute_data" ) . unwrap ( ) ) ;
207
+ inputs. push ( parse_str ( "return_value: *mut ::phper::sys ::zval" ) . unwrap ( ) ) ;
202
208
}
203
209
204
210
fn init_func_args ( mut inputs : Punctuated < FnArg , Comma > ) -> Punctuated < FnArg , Comma > {
@@ -214,26 +220,26 @@ fn shutdown_func_args(mut inputs: Punctuated<FnArg, Comma>) -> Punctuated<FnArg,
214
220
}
215
221
216
222
fn zend_module_info_func_args ( mut inputs : Punctuated < FnArg , Comma > ) -> Punctuated < FnArg , Comma > {
217
- inputs. push ( parse_str ( "zend_module: *mut ::phper_sys ::zend_module_entry" ) . unwrap ( ) ) ;
223
+ inputs. push ( parse_str ( "zend_module: *mut ::phper::sys ::zend_module_entry" ) . unwrap ( ) ) ;
218
224
inputs
219
225
}
220
226
221
- fn zend_module_startup_n ( ident : Ident ) -> Ident {
222
- Ident :: new ( & format ! ( "zm_startup_{}" , ident) , ident. span ( ) )
223
- }
224
-
225
- fn zend_module_shutdown_n ( ident : Ident ) -> Ident {
226
- Ident :: new ( & format ! ( "zm_shutdown_{}" , ident) , ident. span ( ) )
227
- }
228
-
229
- fn zend_module_activate_n ( ident : Ident ) -> Ident {
230
- Ident :: new ( & format ! ( "zm_activate_{}" , ident) , ident. span ( ) )
231
- }
232
-
233
- fn zend_module_deactivate_n ( ident : Ident ) -> Ident {
234
- Ident :: new ( & format ! ( "zm_deactivate_{}" , ident) , ident. span ( ) )
235
- }
236
-
237
- fn zend_module_info_n ( ident : Ident ) -> Ident {
238
- Ident :: new ( & format ! ( "zm_info_{}" , ident) , ident. span ( ) )
239
- }
227
+ // fn zend_module_startup_n(ident: Ident) -> Ident {
228
+ // Ident::new(&format!("zm_startup_{}", ident), ident.span())
229
+ // }
230
+ //
231
+ // fn zend_module_shutdown_n(ident: Ident) -> Ident {
232
+ // Ident::new(&format!("zm_shutdown_{}", ident), ident.span())
233
+ // }
234
+ //
235
+ // fn zend_module_activate_n(ident: Ident) -> Ident {
236
+ // Ident::new(&format!("zm_activate_{}", ident), ident.span())
237
+ // }
238
+ //
239
+ // fn zend_module_deactivate_n(ident: Ident) -> Ident {
240
+ // Ident::new(&format!("zm_deactivate_{}", ident), ident.span())
241
+ // }
242
+ //
243
+ // fn zend_module_info_n(ident: Ident) -> Ident {
244
+ // Ident::new(&format!("zm_info_{}", ident), ident.span())
245
+ // }
0 commit comments