import Ġcom . squareup . kotlin po et .* Ċ import Ġcom . squareup . kotlin po et . Parameterized TypeName . Companion . parameter ized By Ċ import Ġorg . j dom 2 . Element Ċ Ċ fun ĠElement . process Class ( enums : ĠMap < String , ĠType Name >): ĠFile Spec ? Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġto Name () ĊĠĠĠ Ġval Ġparent Ġ= Ġget Attribute (" parent ") ?. value ĊĊĠĠĠ Ġval Ġctr Element Ġ= Ġget Child (" constructor ", Ġint rospection Ns ) ĊĠĠĠ Ġif Ġ( ctr Element ?. getAttribute (" deprecated ") Ġ!= Ġnull ) Ġreturn Ġnull ĊĠĠĠ Ġval Ġctr Params Ġ= Ġctr Element ?. parameters ĊĠĠĠ Ġif Ġ( name Ġ!= Ġ" Widget " Ġ&& Ġctr Params ?. any Ġ{ Ġ! it . to Ty pename (). is Supported () Ġ} Ġ== Ġtrue ) Ġreturn Ġnull ĊĊĠĠĠ Ġval Ġgtk Class Ptr Ġ= ĠClass Name ( LIB , Ġ" Gtk $ name "). ptr ĊĊĠĠĠ Ġval Ġfile Ġ= ĠFile Spec . builder ( NS , Ġname ). build Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Annotation ( Suppress Unused ) ĊĊĠĠĠĠĠĠĠ Ġadd Type ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Annotation ( Dsl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Annotation ( Experimental Unsigned Types ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Child (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Modifiers ( if Ġ( name Ġ== Ġ" Widget " Ġ|| Ġctr Element Ġ== Ġnull ) ĠK Modifier . AB STR ACT Ġelse ĠK Modifier . OPEN ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Derived Ġ= Ġparent ?. contains (" G Object . Init ially Un owned ") Ġ== Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Derived ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuperclass ( ClassName ( NS , Ġparent !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Derived Ġ&& Ġctr Element Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Modifiers ( K Modifier . INTERNAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( Parameter Spec . builder (" widget Ptr ", ĠGtk Widget . ptr . as Nullable ()). defaultValue (" null "). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( Property Spec . builder (" widget Ptr ", ĠGtk Widget . ptr . as Nullable (), ĠK Modifier . OVERRIDE ). initializer (" widget Ptr "). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġctr Ġ= Ġctr Element . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġctr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Name Ġ= Ġname . to Instance Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctr Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( C INTER OP , Ġ" reinterpret ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġif Ġ( ctr Params !!. any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ ctr (" Ġ+ Ġctr Params . join ToString (", Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġit . to Ty pename (). ig tptr ( enums ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( it . to Name (), Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Type From ( it . to Name (), Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ+ Ġ")" Ġ+ Ġif Ġ( name Ġ== Ġ" Application Window ") Ġ"" Ġelse Ġ" ?. reinterpret ()" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ ctr ()?. reinterpret ()" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctr Element . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall This Constructor ( call ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDSL ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ build . addFunction ( instance Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġour Widget Ġ= Ġname . to TypeName (). as Our Widget ( enums ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Modifiers ( K Modifier . INLINE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Annotation ( Experimental Unsigned Types ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver ( Container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( our Widget ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġctr Params . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( it . to Name (), Ġit . to Ty pename (). ig tptr ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( Parameter Spec . builder (" init ", Ġour Widget . as Builder ()). defaultValue ("{} "). build ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ$ name (${ params . join ToString (", Ġ" )} ). apply Â· { Â· init (); Â· this @ $ instance Name . add ( this ) Â· }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Private Property (" self ", Ġgtk Class Ptr . as Nullable ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( C INTER OP , Ġ" reinterpret ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġwidget Ptr !!. reinterpret () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ! in ĠlistOf (" Label ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( instance Name , Ġgtk Class Ptr . as Nullable ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( C INTER OP , Ġ" reinterpret ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġwidget Ptr !!. reinterpret () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctr Element Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( C INTER OP , Ġ" reinterpret ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Private Property (" self ", Ġgtk Class Ptr ) Ġ{ Ġadd Statement (" return Ġwidget Ptr !!. reinterpret () ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ!= Ġ" Widget " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġctr Element . parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( it . to Name (), Ġit . to Ty pename (). ig tptr ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġctr Ġ= Ġctr Element . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġctr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġif Ġ( params . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ ctr (" Ġ+ Ġparams . join ToString (", Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ+ Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ ctr ()" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( Property Spec . builder (" widget Ptr ", Ġgtk Class Ptr ). initializer ("$ call !! "). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Private Property (" self ", Ġgtk Class Ptr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġwidget Ptr ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWidget ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( Property Spec . builder (" widget Ptr ", Ġgtk Class Ptr . as Nullable (), ĠK Modifier . AB STR ACT ). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Private Property (" self ", Ġgtk Class Ptr . as Nullable ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġwidget Ptr ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= Ġmutable Map Of < String , PropertyInfo >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Children (" method ", Ġint rospection Ns ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getAttribute (" throws ") Ġ== Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . parameters . all Ġ{ Ġit . getChild (" var args ", Ġint rospection Ns ) Ġ== Ġnull Ġ&& Ġit . to Ty pename (). is Supported () Ġ} Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getAttribute (" deprecated ") ?. value Ġ!= Ġ" 1 " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Name (). remove Prefix (" get _ "). remove Prefix (" set _ ") Ġ! in ĠlistOf (" destroy ed ", Ġ" direction ", Ġ" screen ", Ġ" activate ", Ġ" toggle _ size _ request ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( name Ġ!= Ġ" Menu " Ġ|| Ġ! it . to Name (). endsWith ("_ active ")) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( name Ġ!= Ġ" Menu Shell " Ġ|| Ġ! it . to Name (). endsWith (" append ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġit . to Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Count Ġ= Ġit . parameters . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn . startsWith (" get _ ") Ġ&& Ġp Count Ġ== Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrimmed Ġ= Ġn . remove Prefix (" get _ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . compute ( trimmed ) Ġ{ Ġ_, Ġp Ġ-> ĠProperty Info ( trimmed , Ġit , Ġp ?. setter )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn . startsWith (" set _ ") Ġ&& Ġp Count Ġ== Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrimmed Ġ= Ġn . remove Prefix (" set _ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . compute ( trimmed ) Ġ{ Ġ_, Ġp Ġ-> ĠProperty Info ( trimmed , Ġp ?. getter , Ġit )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= Ġit . getChild (" return - value ", Ġint rospection Ns ). to Ty pename () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġit . parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġparameters . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Name () Ġto Ġit . to Ty pename () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( returnType . is Supported () Ġ&& Ġarguments . all Ġ{ Ġit . second . is Supported () Ġ} Ġ&& Ġparameters . all Ġ{ Ġit . getAttribute (" direction ") ?. value Ġ!= Ġ" out " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Function ( n . to Instance Name ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( returnType . ig tptr ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( it . first , Ġit . second . ig tptr ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġit . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġf ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġif Ġ( arguments . any ()) Ġ"$ f ( self , Ġ${ arguments . join ToString (", Ġ") Ġ{ Ġconvert Type From ( it . first , Ġit . second ) Ġ} })" Ġelse Ġ"$ f ( self )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ" Ġ+ Ġconvert Type To ( call , ĠreturnType . ig tptr ( enums ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . any Ġ{ Ġit . second . is Widget Ptr ( enums ) Ġ} Ġ&& Ġarguments . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ( it . second Ġas ? ĠClass Name )?. simple Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ! in Ġskip In Over load Ġ&& Ġname ?. startsWith (" G dk ") Ġ!= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġoverload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Function ( n . to Instance Name ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( returnType . ig tptr ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( it . first , Ġit . second . as Our Widget ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġit . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġf ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġif Ġ( arguments . any ()) Ġ"$ f ( self , Ġ${ arguments . join ToString (", Ġ") Ġ{ Ġconvert Type From ( it . first , Ġit . second . as Our Widget ( enums )) Ġ} })" Ġelse Ġ"$ f ( self )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ" Ġ+ Ġconvert Type To ( call , ĠreturnType . ig tptr ( enums ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignals Ġ= Ġget Children (" signal ", Ġg lib Ns ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signals . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( C INTER OP , Ġ" static C Function ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( C INTER OP , Ġ" as Stable Ref ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignals . filter Ġ{ Ġit . parameters . all Ġ{ Ġit . to Ty pename (). is Supported () Ġ&& Ġit . to Ty pename () Ġ! in Ġenums . values ĠĠ Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġsignal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( signal Name , Ġparams , Ġfun Spec ) Ġ= Ġgenerate Signal Handler ( signal , Ġname , Ġenums ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ build . addFunction ( fun Spec ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Parameter ("_ data ", ĠCO pa que Pointer . as Nullable ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("_ data ?. as Stable Ref <$ name >() ?. get ()? .$ signal Name ?. emit (${ params . join ToString Ġ{ Ġconvert Type From ( it . to Name (). escaped (), Ġit . to Ty pename (). ptr In Signal ( enums ), Ġfalse ) Ġ}}) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . forEach Ġ{ Ġ_, Ġprop Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prop . getter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Function ((" set _" Ġ+ Ġprop . name ). to Instance Name ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtypeName Ġ= Ġprop . setter !!. getChild (" return - value ", Ġint rospection Ns ). to Ty pename () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( typeName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġprop . setter . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġf ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġprop . setter . parameters . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġit . to Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġit . to Ty pename () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Parameter ( n , Ġt . ig tptr ( enums )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Type From ( n , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ" Ġ+ Ġconvert Type To ("$ f ( self , Ġ${ arguments . join ToString (", Ġ") })", ĠtypeName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ" Ġ+ Ġconvert Type To ("$ f ()", ĠtypeName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . setter . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw TypeName Ġ= Ġprop . getter . getChild (" return - value ", Ġint rospection Ns ). to Ty pename () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( raw TypeName . is Supported ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtypeName Ġ= Ġraw TypeName . ig tptr ( enums ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prop . setter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Var Property ( if Ġ( name Ġ== Ġ" Widget " Ġ&& Ġprop . name Ġ== Ġ" window ") Ġ" g dk Window " Ġelse Ġprop . name . to Instance Name (), ĠtypeName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . getter . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L \ n \ n ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . setter . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġprop . getter . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ" Ġ+ Ġconvert Type To ("$ f ( self )", ĠtypeName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetter ( typeName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġprop . setter . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement ("$ f ( self , Ġ" Ġ+ Ġconvert Type From (" value ", ĠtypeName ) Ġ+ Ġ") ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . getter . getChild (" doc ", Ġint rospection Ns )?. text ?. let Ġ{ Ġadd K doc ("% L ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( prop . name . to Instance Name (), ĠtypeName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġprop . getter . getAttribute (" identifier ", Ġc Ns ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Import ( LIB , Ġf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" return Ġ" Ġ+ Ġconvert Type To ("$ f ( self )", ĠtypeName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfile Ċ } Ċ Ċ private Ġfun ĠType Spec . Builder . generate Signal Handler ( ĊĠĠĠ Ġsignal : ĠElement , ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġenums : ĠMap < String , ĠType Name > Ċ ): ĠTrip le < String , ĠList < Element >, ĠFun Spec . Builder > Ġ{ ĊĠĠĠ Ġval Ġsignal Name Ġ= Ġ(" on -" Ġ+ Ġsignal . to Name ()). to Instance Name () ĊĠĠĠ Ġval Ġhandler Ġ= Ġ"${ name }_${ signal Name }_ Handler " ĊĊĠĠĠ Ġval Ġparams Ġ= Ġsignal . parameters ĊĊĠĠĠ Ġ// ĠSignal 2 < Places Sidebar , ĠC Pointer < lib gtk 3 . G File > ?, ĠGtk Places Open Flags , ĠC Function <( CP o inter < *> ?, ĠC Pointer < G File > ?, ĠGtk Places Open Flags , ĠCO pa que Pointer ?) Ġ-> ĠUnit >> ĊĠĠĠ Ġval Ġthis Type Ġ= ĠClass Name ( NS , Ġname ) ĊĠĠĠ Ġval Ġw C Point ed Ġ= ĠW ildcard TypeName . consumer Of ( C Point ed ) ĊĊĠĠĠ Ġval Ġsignal Type Ġ= Ġwhen Ġ( params . size ) Ġ{ ĊĠĠĠĠĠĠĠĠ 6 Ġ-> ĠSignal 6 . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 3 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 4 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 5 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 3 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 4 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 5 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ 5 Ġ-> ĠSignal 5 . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 3 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 4 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 3 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 4 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ 4 Ġ-> ĠSignal 4 . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 3 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 3 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ 3 Ġ-> ĠSignal 3 . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 2 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ 2 Ġ-> ĠSignal 2 . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 1 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠSignal 1 . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ig tptr ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ 0 ]. to Ty pename (). ptr In Signal ( enums ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ 0 Ġ-> ĠSignal . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Function . parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLambda TypeName . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO pa que Pointer . as Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠUNIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Too Ġmany Ġparameters Ġin Ġsignal Ġ(${ params . size }) ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġadd Property ( ĊĠĠĠĠĠĠĠ ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Type ĊĠĠĠĠĠĠĠ Ġ). delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" lazy Â· { Â· % T ( widget Ptr !! , Ġthis , Ġ\" ${ signal . to Name () }\ ", Ġstatic C Function ( ::$ handler )) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Type ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġfun Spec Ġ= ĠFun Spec . builder ( handler ) ĊĠĠĠĠĠĠĠ Ġ. add Modifiers ( K Modifier . PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ. add Parameter ( Parameter Spec . builder (" sender ", ĠC Pointer . parameter ized By ( w C Point ed ). as Nullable ()). add Annotation ( Suppress Unused Parameter ). build ()) ĊĠĠĠĠĠĠĠ Ġ. add Annotation ( Suppress FunctionName ) ĊĠĠĠĠĠĠĠ Ġ. add Annotation ( Experimental Unsigned Types ) ĊĊĠĠĠ Ġparams . forEach Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠ Ġfun Spec . add Parameter ( param . to Name (), Ġparam . to Ty pename (). ptr In Signal ( enums )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠTrip le ( signal Name , Ġparams , Ġfun Spec ) Ċ } Ċ