8
8
use crate :: context:: Context ;
9
9
use crate :: models:: domain:: {
10
10
BuildConfiguration , BuiltinClass , BuiltinMethod , BuiltinSize , BuiltinVariant , Class ,
11
- ClassCommons , ClassConstant , ClassConstantValue , ClassMethod , Constructor , Enum , Enumerator ,
12
- EnumeratorValue , ExtensionApi , FnDirection , FnParam , FnQualifier , FnReturn , FunctionCommon ,
13
- GodotApiVersion , ModName , NativeStructure , Operator , Singleton , TyName , UtilityFunction ,
14
- } ;
15
- use crate :: models:: json:: {
16
- JsonBuiltinClass , JsonBuiltinMethod , JsonBuiltinSizes , JsonClass , JsonClassConstant ,
17
- JsonClassMethod , JsonConstructor , JsonEnum , JsonEnumConstant , JsonExtensionApi , JsonHeader ,
18
- JsonMethodReturn , JsonNativeStructure , JsonOperator , JsonSingleton , JsonUtilityFunction ,
11
+ ClassCommons , ClassConstant , ClassConstantValue , ClassMethod , ClassSignal , Constructor , Enum ,
12
+ Enumerator , EnumeratorValue , ExtensionApi , FnDirection , FnParam , FnQualifier , FnReturn ,
13
+ FunctionCommon , GodotApiVersion , ModName , NativeStructure , Operator , Singleton , TyName ,
14
+ UtilityFunction ,
19
15
} ;
16
+ use crate :: models:: json:: { JsonBuiltinClass , JsonBuiltinMethod , JsonBuiltinSizes , JsonClass , JsonClassConstant , JsonClassMethod , JsonConstructor , JsonEnum , JsonEnumConstant , JsonExtensionApi , JsonHeader , JsonMethodReturn , JsonNativeStructure , JsonOperator , JsonSignal , JsonSingleton , JsonUtilityFunction } ;
20
17
use crate :: util:: { get_api_level, ident, option_as_slice} ;
21
18
use crate :: { conv, special_cases} ;
22
19
use proc_macro2:: Ident ;
@@ -113,6 +110,14 @@ impl Class {
113
110
} )
114
111
. collect ( ) ;
115
112
113
+ let signals = option_as_slice ( & json. signals )
114
+ . iter ( )
115
+ . map ( |s| {
116
+ let surrounding_class = & ty_name;
117
+ ClassSignal :: from_json ( s, surrounding_class, ctx)
118
+ } )
119
+ . collect ( ) ;
120
+
116
121
Some ( Self {
117
122
common : ClassCommons {
118
123
name : ty_name,
@@ -126,6 +131,7 @@ impl Class {
126
131
constants,
127
132
enums,
128
133
methods,
134
+ signals,
129
135
} )
130
136
}
131
137
}
@@ -513,6 +519,20 @@ impl ClassMethod {
513
519
}
514
520
}
515
521
522
+ impl ClassSignal {
523
+ pub fn from_json (
524
+ json_signal : & JsonSignal ,
525
+ surrounding_class : & TyName ,
526
+ ctx : & mut Context ,
527
+ ) -> Self {
528
+ Self {
529
+ name : json_signal. name . clone ( ) ,
530
+ parameters : FnParam :: new_range ( & json_signal. arguments , ctx) ,
531
+ surrounding_class : surrounding_class. clone ( ) ,
532
+ }
533
+ }
534
+ }
535
+
516
536
impl UtilityFunction {
517
537
pub fn from_json ( function : & JsonUtilityFunction , ctx : & mut Context ) -> Option < Self > {
518
538
if special_cases:: is_utility_function_deleted ( function, ctx) {
0 commit comments