@@ -141,6 +141,14 @@ func buildRustInterfaces(component ComponentDefinition, w LanguageWriter, ClassI
141
141
return err
142
142
}
143
143
}
144
+ w .Writeln ("/*************************************************************************************************************************" )
145
+ w .Writeln (" Trait defined for global methods of %s" , NameSpace )
146
+ w .Writeln ("**************************************************************************************************************************/" )
147
+ w .Writeln ("" )
148
+ err := writeRustGlobalTrait (component , w )
149
+ if err != nil {
150
+ return err
151
+ }
144
152
return nil
145
153
}
146
154
@@ -186,7 +194,7 @@ func writeRustTrait(component ComponentDefinition, class ComponentDefinitionClas
186
194
for j := 0 ; j < len (methods ); j ++ {
187
195
method := methods [j ]
188
196
w .Writeln ("" )
189
- err := writeRustTraitFn (method , w )
197
+ err := writeRustTraitFn (method , w , true )
190
198
if err != nil {
191
199
return err
192
200
}
@@ -198,12 +206,15 @@ func writeRustTrait(component ComponentDefinition, class ComponentDefinitionClas
198
206
return nil
199
207
}
200
208
201
- func writeRustTraitFn (method ComponentDefinitionMethod , w LanguageWriter ) error {
209
+ func writeRustTraitFn (method ComponentDefinitionMethod , w LanguageWriter , hasSelf bool ) error {
202
210
methodName := toSnakeCase (method .MethodName )
203
211
w .Writeln ("// %s" , methodName )
204
212
w .Writeln ("//" )
205
213
w .Writeln ("// %s" , method .MethodDescription )
206
- parameterString := "&mut self"
214
+ parameterString := ""
215
+ if hasSelf {
216
+ parameterString += "&mut self"
217
+ }
207
218
returnType := ""
208
219
for k := 0 ; k < len (method .Params ); k ++ {
209
220
param := method .Params [k ]
@@ -213,7 +224,11 @@ func writeRustTraitFn(method ComponentDefinitionMethod, w LanguageWriter) error
213
224
}
214
225
RustParam := RustParams [0 ]
215
226
if param .ParamPass != "return" {
216
- parameterString += fmt .Sprintf (", %s : %s" , RustParam .ParamName , RustParam .ParamType )
227
+ if parameterString == "" {
228
+ parameterString += fmt .Sprintf ("%s : %s" , RustParam .ParamName , RustParam .ParamType )
229
+ } else {
230
+ parameterString += fmt .Sprintf (", %s : %s" , RustParam .ParamName , RustParam .ParamType )
231
+ }
217
232
} else {
218
233
returnType = RustParam .ParamType
219
234
}
@@ -227,3 +242,22 @@ func writeRustTraitFn(method ComponentDefinitionMethod, w LanguageWriter) error
227
242
}
228
243
return nil
229
244
}
245
+
246
+ func writeRustGlobalTrait (component ComponentDefinition , w LanguageWriter ) error {
247
+ w .Writeln ("// Wrapper trait for global methods" )
248
+ w .Writeln ("//" )
249
+ w .Writeln ("trait Wrapper {" )
250
+ w .AddIndentationLevel (1 )
251
+ methods := component .Global .Methods
252
+ for j := 0 ; j < len (methods ); j ++ {
253
+ method := methods [j ]
254
+ w .Writeln ("" )
255
+ err := writeRustTraitFn (method , w , false )
256
+ if err != nil {
257
+ return err
258
+ }
259
+ }
260
+ w .ResetIndentationLevel ()
261
+ w .Writeln ("}" )
262
+ return nil
263
+ }
0 commit comments