
    0h@                    "   S SK r SSKJr  SSKJr  SSKJrJrJrJr  SSKJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-  SSKJ.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5  SSK6J7r7   " S	 S
\85      r9g)    N   )ast)message)TAG_DEPRECATED	TAG_SINCETAG_STABILITYTAG_RETURNS)%ANN_ALLOW_NONE	ANN_ARRAYANN_ATTRIBUTESANN_CLOSUREANN_CONSTRUCTORANN_COPY_FUNCANN_DEFAULT_VALUEANN_DESTROYANN_ELEMENT_TYPEANN_EMITTERANN_FOREIGNANN_FREE_FUNCANN_GET_PROPERTYANN_GET_VALUE_FUNC
ANN_GETTERANN_IN	ANN_INOUT
ANN_METHODANN_OUTANN_REF_FUNCANN_RENAME_TO	ANN_SCOPEANN_SET_PROPERTYANN_SET_VALUE_FUNC
ANN_SETTERANN_SKIPANN_TRANSFERANN_TYPEANN_UNREF_FUNC	ANN_VALUE	ANN_VFUNCANN_NULLABLEANN_OPTIONALANN_NOTANN_FINISH_FUNCANN_SYNC_FUNCANN_ASYNC_FUNC)OPT_ARRAY_FIXED_SIZEOPT_ARRAY_LENGTHOPT_ARRAY_ZERO_TERMINATEDOPT_OUT_CALLEE_ALLOCATESOPT_OUT_CALLER_ALLOCATESOPT_TRANSFER_CONTAINEROPT_TRANSFER_FLOATINGOPT_TRANSFER_NONE)to_underscores_noprefixc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSKS jrSKS jrS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S? r@S@ rASA rBSB rCSC rDSD rESE rFSF rGSG rHSH rISI rJSJrKg)LMainTransformerN   c                 L    Xl         X l        UR                  U l        0 U l        g N)_transformer_blocks	namespace
_namespace_uscore_type_names)selftransformerblockss      7/lib/gobject-introspection/giscanner/maintransformer.py__init__MainTransformer.__init__P   s"    '%//"$    c                    U R                   R                  (       d  [        R                  " S5        U R                   R	                  U R
                  5        U R                   R	                  U R                  5        U R                   R	                  U R                  5        U R                   R	                  U R                  5        U R                   R	                  U R                  5        U R                  5         U R                   R	                  U R                  5        U R                   R                  5        H  n[        U[        R                  5      (       a'  UR                  b  XR                   UR"                  '   MI  [        U[        R$                  [        R&                  45      (       d  Mz  [)        UR*                  5      R-                  5       nXR                   U'   M     [/        U R                   R                  5       5       H  n[        U[        R0                  5      (       a  U R3                  U5        [        U[        R4                  [        R6                  45      (       a"  U R9                  U5        U R;                  U5        [        U[        R<                  [        R>                  45      (       d  M  U RA                  U5        M     U R                   R	                  U RB                  5        U R                   R	                  U R                  5        U R                   R	                  U RD                  5        U RG                  5         g )NzjNamespace is empty; likely causes are:
* Not including .h files to be scanned
* Broken --identifier-prefix)$r@   namesr   errorwalk_pass_fixup_hidden_fields_pass_type_resolution_pass_read_annotations_early_pass_callable_defaults_pass_read_annotations_add_standalone_doc_sectionsvalues
isinstancer   
Registeredget_typerA   c_symbol_prefixRecordUnionr7   namelowerlistFunction_pair_functionClass	Interface_pair_class_virtuals_pair_property_accessorsEnumBitfield_pass_member_numeric_name_pass_read_annotations2_pass3_pair_quarks_with_enums)rB   nodeuscoreds      rE   	transformMainTransformer.transformX   sC   $$MM 9 :
 	T;;<
 	T778 	T>>? 	T99: 	T889 	))+ 	T778 OO**,D$//DMM4M@D''(<(<=D3::syy"9::1$))<BBD37''0 - //12D$--##D)$CMM :;;))$/--d3$3<< 899..t4 3 	T99: 	T778T[[) 	$$&rH   c                 L   U R                   R                  5        H  u  pUR                  S5      (       d  M  UR                  (       d  M0  [        R
                  " USS  5      nUR                  Ul        UR                  Ul        U R                  R                  U5        M     g )NSECTION:   )r>   items
startswithdescriptionr   
DocSectiondocpositiondoc_positionr@   append)rB   
block_nameblockri   s       rE   rR   ,MainTransformer._add_standalone_doc_sections   sw    !%!3!3!5J$$Z00U5F5F5F~~jn5 ,,$)NN!&&t, "6rH   c                    [        U[        R                  [        R                  [        R                  [        R
                  45      (       a  UR                   H~  nU(       d  M  UR                  c  M  UR                  R                  S5      (       d  M=  UR                  c  ML  [        UR                  [        R                  5      (       d  Mw  SUl        M     g)zVHide all callbacks starting with _; the typical
usage is void (*_gtk_reserved1)(void);_FT)rT   r   r_   r`   rX   rY   fieldsrZ   rq   anonymous_nodeCallbackintrospectable)rB   ri   chainfields       rE   rM   )MainTransformer._pass_fixup_hidden_fields   s     dSYYszz399MNNEJJ*JJ))#..((4u33S\\BB+0E( % rH   c                 F    UR                  U5      nUco  [        U[        R                  5      (       a  SUR
                  < 3nOSn[        R                  " [        R                  USU< SU< SUR                  < S35        UR
                  $ ! [         a    S n Nf = f)Nz
parameter zreturn valuezcan't find parameter  referenced by  of '')
get_parameter
ValueErrorrT   r   	Parameterargnamer   log_nodeFATALrZ   )rB   parent
param_nameoriginparamorigin_names         rE   _get_validate_parameter_name,MainTransformer._get_validate_parameter_name   s    	((4E =&#--0006A,v{FKK9:
 }}  	E	s   B B B c                     UR                  U5      nUcM  SUR                  < 3n[        R                  " [        R
                  USU< SU< SUR                  < S35        UR                  $ ! [         a    S n Njf = f)Nzfield zcan't find field r   r   r   )	get_fieldr   rZ   r   r   r   )rB   r   
field_namer   r   r   s         rE   _get_validate_field_name(MainTransformer._get_validate_field_name   ss    	$$Z0E =(.6Kv{FKK9:
 zz  	E	s   A/ /A>=A>c           
      V   U(       d  g UR                   R                  [        5      nU(       d  g US   nU R                  R	                  U5      nU(       d  [
        R                  " USU< S35        g UR                  (       a9  [
        R                  " USUR                  < SUR                  < SU< S35        g UR                  (       a9  [
        R                  " USUR                  < SUR                  < S	U< S35        g UR                  Ul        UR                  Ul	        g )
Nr   zCan't find symbol 'z&' referenced by "rename-to" annotationz
Function 'z' already shadowed by 'z', can't overwrite with 'r   z' already shadows 'z', can't multiply shadow with ')annotationsgetr   r@   get_by_symbolr   	warn_nodeshadowed_bysymbolshadowsrZ   )rB   ri   r   ry   	rename_totargets         rE   _apply_annotation_rename_to+MainTransformer._apply_annotation_rename_to   s    %%))-8	aL	..y9dS\_ad%}}#//&()
 ^^d%}}#^^&() "&F!;;DLrH   c                    UR                   (       a  UR                  (       a  U(       d  g UR                  nUR                  R                  UR                  5      nU(       a  UR
                  O0 nUR                  [        S/5      S   n[        U;   a0  [        R                  " USR                  UR                  5      5        U[        S 4;  as  UR                  R                  S5      (       dR  UR                  R                  S5      (       d1  [        R                  " USR                  XaR                  5      5        g g g g )Nnoner   zO"nullable" annotation on instance parameter of {0}: did you really intend that?freedestroyz"transfer" annotation of "{0}" on instance parameter of {1}: should not be applied to a method's instance parameter unless this is a free() or destroy() method)	is_methodinstance_parameterparamsr   r   r   r$   r)   r   strict_nodeformatr   r6   rZ   rq   )rB   ri   ry   r   tagr   transfers          rE   _check_instance_parameter)MainTransformer._check_instance_parameter   s    ~~T%<%<E''llu}}-),coo"??<&:1=;&&&,fT[[&9; .55II((00II((33HHNkkI+, 4 1 6rH   c                 r    U R                   R                  UR                  5      nU R                  XU5        g r<   )r>   r   r   _apply_annotations_callablerB   ri   r   ry   s       rE   _apply_annotations_function+MainTransformer._apply_annotations_function   s*      -((e<rH   c                 H   U R                   R                  UR                  5      nUR                   H\  nU(       d  M  UR                  R                  UR
                  5      nU(       d  M:  UR                  Ul        UR                  Ul	        M^     U R                  X5        g r<   )r>   r   r   
parametersr   r   rr   rt   ru   rv   _apply_annotations_annotated)rB   ri   r   ry   r   	doc_params         rE   !_apply_annotations_function_macro1MainTransformer._apply_annotations_function_macro  su      -__Eu!LL,,U]];	9 ) 5 5EI)2););E& % 	))$6rH   c                    [        U[        R                  5      (       ai  UR                  b&  U R                  R                  UR                  5      nO%U R                  R                  UR                  5      nU R                  X5        gNT)rT   r   rX   ctyper>   r   c_namer   r   s       rE   rO   ,MainTransformer._pass_read_annotations_early  s^    dCJJ''zz%((4((5--d:rH   c                 T   [        U[        R                  [        R                  45      (       ay  UR                   H(  nUR
                  b  M  U R                  X5      Ul        M*     UR                  R
                  c*  U R                  XR                  5      UR                  l        gr   )rT   r   CallableSignalr   r   _get_transfer_defaultretval)rB   ri   r   r   s       rE   rP   'MainTransformer._pass_callable_defaults  sv    dS\\3::677>>)%)%?%?%LEN ) {{##+'+'A'A$'T$rH   c                    [        U[        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  4	5      (       a]  UR                  b  UR                  $ [        U[        R                  5      (       a  UR                  b  UR                  $ UR                  $ [        SU< S35      e)NzUnhandled node 'r   )rT   r   r_   r`   rX   rY   rc   rd   r   AliasConstantr   rU   
gtype_namer   AssertionErrorrB   ri   s     rE   _get_annotation_name$MainTransformer._get_annotation_name  s    dSYYszz YY#,, \\399cllD E E zz%zz!D#..11doo6Q&;;d=>>rH   c                 V    U R                   R                  U R                  U5      5      $ r<   )r>   r   r   r   s     rE   
_get_blockMainTransformer._get_block(  s"    || 9 9$ ?@@rH   c           	      	   UR                   (       d  g[        U[        R                  5      (       a  U R	                  X5        [        U[        R
                  5      (       a  U R                  X5        [        U[        R                  5      (       a  U R                  X5        [        U[        R                  5      (       a  U R                  XU R                  U5      S9  [        U[        R                  [        R                  [        R                  [        R                  [        R                   [        R                  45      (       a   U R#                  XR                  U5      5        [        U[        R                  [        R                   45      (       a   U R%                  XR                  U5      5        [        U[        R                  [        R                  [        R&                  [        R                  45      (       a  U R                  U5      nUR(                   H  nU R+                  XU5        M     U R-                  U5      nSUR/                  5       < 3nU R0                  R3                  US 5      nU R#                  X5        [        U[        R                  [        R                  45      (       aH  UR4                   H  nU R7                  X5        M     UR8                   H  nU R;                  X5        M     [        U[        R                  5      (       a  U R                  U5      nU(       a  UR<                  R?                  [@        5      n	U	(       a  U	S   OS Ul!        UR<                  R?                  [D        5      n	U	(       a  U	S   OS Ul#        UR<                  R?                  [H        5      n	U	(       a  U	S   OS Ul%        UR<                  R?                  [L        5      n	U	(       a  U	S   OS Ul'        [        U[        RP                  5      (       a  U RS                  U5        [        U[        R&                  [        R                  45      (       a|  U R                  U5      nU(       ad  UR<                  R?                  [T        5      n	U	(       a  U	S   OS Ul+        UR<                  R?                  [X        5      n	U	(       a  U	S   OS Ul-        g)NF)ry   rn   r   T).r?   rT   r   r   _apply_annotations_aliasr]   r   FunctionMacror   r   r   r   r_   r`   rY   rc   rd   r   _apply_annotations_enum_membersrX   r}   _apply_annotations_fieldr   r[   r>   pop
properties_apply_annotations_propertysignals_apply_annotations_signalr   r   r&   
unref_funcr   ref_funcr!   set_value_funcr   get_value_funcr   _apply_annotations_constantr   	copy_funcr   	free_func)
rB   ri   r   ry   r   rZ   section_namepropsig
annotations
             rE   rQ   &MainTransformer._pass_read_annotations+  sS   ~~dCII&&))$6dCLL)),,T9dC--..224?dCLL)),,TPT@U,VdSYYsyy#(( \\3<<9 : :--dOOD4IJdSXXs||45500t7LMdSYYszz399MNNOOD)E--d5A %,,T2D+/::<:L LL$$\48E--d:dSYY67700< (||..t9 $dCII&&OOD)E"..22>B
3=*Q-4"..22<@
1;
1"..223EF
7Ajmt#"..223EF
7Ajmt#dCLL)),,T2dSZZ344OOD)E"..22=A
2<A$"..22=A
2<A$rH   c                    [         U;   a  U R                  XU5        O[        U;   a  U R                  XU5        [	        UR
                  [        R                  5      (       a  U R                  UR
                  U5        g g r<   )	r   _apply_annotations_arrayr   _apply_annotations_element_typerT   typer   Array_check_array_element_type)rB   r   ri   r   s       rE   _adjust_container_type&MainTransformer._adjust_container_type`  s`    #))&D,00{Kdii++**499kB ,rH   Nc                   ^ ^^^^ U4S jmU 4S jnU4S jmUU4S jnT" TXVT5      u  pxU(       a  [         R                  " ST< S35        UR                  (       db  S n	Ub=  [        U[        R
                  5      (       a  UR                  n
T R                  XC5      n	OTn
[         R                  " UU
< ST< S3U	S9  U$ )	Nc                 $  > [         R                  " SU S5      n[        U5      S:X  a  US   SS/OUu  pVnU" U5      /nUS:X  d  US:X  a<  US:X  a  SOSn	Xi:w  a,  T" XqX35      u  pUR                  U
5        US   USS	 pvXi:w  a  M,  OXg-   nU" U6 U4$ )
zReturn a complete type, and the trailing string part after it.
Use resolver() on each identifier, and combiner() on the parts of
each complete type. (top_combiner is used on the top-most type.)z	([,<>()])r   r    <(>)N)resplitlenrw   )type_strresolvertop_combinercombinerbitsfirstseprestargslastsepnextgrab_ones              rE   r  *MainTransformer._resolve.<locals>.grab_onej  s     88L(A6D58Y!^QR0$EUO$DczSCZ"%*#3n!)$(!MJDKK% $Qab n
 z&,,rH   c                 >   > TR                   R                  U 5      nU$ r<   )r=   create_type_from_user_string)identresrB   s     rE   r   *MainTransformer._resolve.<locals>.resolver{  s    ##@@GCJrH   c                   > U(       d  U $ [        U [        R                  5      (       a0  [        U5      S:X  a!  [        R                  " U R                  /UQ76 $ [        U [        R
                  5      (       a  [        U5      S:X  a  US   U l        U $ [        U [        R                  5      (       a"  [        U5      S:X  a  [        R                  " U6 $ [        R                  " ST< S35        U $ )Nr   r      z+Too many parameters in type specification 'r   )
rT   r   Listr   rZ   r   element_typeMapr   warn)baser  r   s     rE   r   *MainTransformer._resolve.<locals>.combiner  s    $))c$i1nxx		1D11D#)),,Ta$(G!D#''**s4yA~ww~%LLDLOQKrH   c                 |   > Tb0  [        T[        R                  5      (       a  TR                  U l        T" U /UQ76 $ r<   )rT   r   Typeis_const)r  r  r   	type_nodes     rE   r   .MainTransformer._resolve.<locals>.top_combiner  s6    $Isxx)H)H ) 2 2D(4((rH   z+Trailing components in type specification 'r   z: Unknown type: ')	positions)	r   r  resolvedrT   r   r]   r   _get_positionr   )rB   r   r  ri   r   r   r   resultr  ru   textr   r  s   ```        @@rE   _resolveMainTransformer._resolvei  s    	-"			)
  ((KLL  H!j&F&F}}--f;f#X'/:BDrH   c                 p    U R                  XX4S9nUb"  UR                  Ul        UR                  Ul        U$ )zJLike _resolve(), but attempt to preserve more attributes of original type.)r  ri   r   )r   r   complete_ctype)rB   r   r  ri   r   r  s         rE   _resolve_toplevel!MainTransformer._resolve_toplevel  s:    x4W  $??FL$-$<$<F!rH   c                    U R                   R                  UR                  5      nU(       a  [        U[        R
                  5      (       a&  UR                  R                  UR                  5      nOA[        U[        R                  5      (       a   UR                  R                  [        5      nOS nUR                  (       a  UR                  $ UR                  $ r<   )r>   r   r   rT   r   r   r   r   Returntagsr	   ru   )rB   funcr   ry   parts        rE   r  MainTransformer._get_position  s      -%//||''6E3::..zz~~k2}}}}$~~rH   c                 H   UR                   nUR                  nU[        R                  R                  :X  ax  U[        R
                  ;   a  U[        R                  ;  d/  [        U[        R                  [        R                  45      (       a!  [        R                  " SUR                  5        U[        R                  R                  :X  aV  U[        R                  [        R                  [        R                   4;  a"  [        R                  " SUR                  5        g g g )Nz9invalid (element-type) for a GPtrArray, must be a pointerzNinvalid (element-type) for a GByteArray, must be one of guint8, gint8 or gchar)
array_typer  r   r   GLIB_PTRARRAYBASIC_GIR_TYPESPOINTER_TYPESrT   rc   rd   r   r  ru   GLIB_BYTEARRAY
TYPE_UINT8	TYPE_INT8	TYPE_CHAR)rB   arrayr   r-  r  s        rE   r   )MainTransformer._check_array_element_type  s    %%
))
 000!4!44SM^M^9^,3<<(@AA 12=2F2FH #))222 NNLL A$--/ O 3rH   c                    UR                  [        5      nU(       a!  U R                  US   UR                  X!5      nO[	        UR                  [
        R                  5      (       a  UR                  R                  nO[UR                  R                  5       nUR                  b4  UR                  R                  S5      (       a  UR                  S S Ul	        [	        UR                  [
        R                  5      (       a  UR                  R                  nOS nUR                  [        5      n[
        R                  " XeUR                  R                  UR                  R                  UR                  R                  S9nUR                  [        S5      S:X  a  SUl        O2[        U;   d  UR                  [        5      S:X  a  SUl        OSUl        UR                  ["        5      n	U	(       a  [	        U[
        R$                  5      (       a  U R'                  XU5      n
OnU R)                  XU5      n
U
(       aU  UR+                  U
5      nUR,                  Ul        UR,                  [
        R.                  :X  a  [
        R0                  Ul        U
(       a  Xl        UR                  [6        5      nU(       a   [9        U5      Ul        Xl        g ! [<        [>        4 a     g f = f)	Nr   *)r   r#  r  0F1T) r   r   r   r   rT   r   r   r  cloner   endswithr-  r   r#  r  r1   zeroterminatedr0   Compoundr   r   r   	directionPARAM_DIRECTION_OUTPARAM_TRANSFER_FULLr   length_param_namer/   intsize	TypeErrorr   )rB   r   ri   r   element_type_optionselement_type_noder-  array_optionscontainer_typelength	paramnamer   fixeds                rE   r   (MainTransformer._apply_annotations_array  s4   */?@ $.B1.E.2ii!G		399-- $		 6 6 !%		 1 &&27H7N7N7W7WX[7\7\*;*A*A#2*F!'dii++--JJ#	2:		26))2J2J,0II,>,>@ 6<C,1N))]:  !:;sB04-05-""#34&#,,// 99&$O	 ==fdS	"00;E&*nnEO#*A*AA),)@)@3<0!!"67&)%j# #	 z* s   =K K'&K'c                 ~   UR                  [        5      nUc  g [        UR                  [        R
                  5      (       an  [        U5      S:w  a/  [        R                  " S[        U5      4-  UR                  5        g U R                  US   UR                  X!5      UR                  l        g [        UR                  [        R                  5      (       a  [        U5      S:w  a/  [        R                  " S[        U5      4-  UR                  5        g U R                  US   UR                  X!5      UR                  l        U R                  US   UR                  X!5      UR                  l        g [        UR                  [        R                  5      (       an  [        U5      S:w  a/  [        R                  " S[        U5      4-  UR                  5        g U R                  US   UR                  X!5      UR                  l        g [        R                  " SUR                  < S3UR                  5        g )	Nr   zQ"element-type" annotation for a list must have exactly one option, not %d optionsr   r  zZ"element-type" annotation for a hash table must have exactly two options, not %d option(s)zS"element-type" annotation for an array must have exactly one option, not %d optionszUnknown container z for element-type annotation)r   r   rT   r   r   r  r   r   r  ru   r   r  r  key_type
value_typer   )rB   r   ri   r   rG  s        rE   r   /MainTransformer._apply_annotations_element_type  s   */?@'dii**'(A-1478L4M3PQ((* %)]]3G3J3799d&LDII"		377++'(A-47:;O7P6ST((* !%/CA/F/3yy$"HDII#'==1Ea1H15D$JDII 		399--'(A-1478L4M3PQ((* %)]]3G3J3799d&LDII" LLFJiiR$$&rH   c                     UR                   [        R                  [        R                  4;   a1  UR                  (       a  [        R
                  $ [        R                  $ [        R
                  $ r<   )r@  r   PARAM_DIRECTION_INOUTrA  caller_allocatesPARAM_TRANSFER_NONErB  rB   r   ri   s      rE   _get_transfer_default_param+MainTransformer._get_transfer_default_param,  sQ    >>c77!557 7$$...***&&&rH   c                    UR                  [        R                  5      (       dE  UR                  (       d4  UR                  [        R                  [        R
                  45      (       a  [        R                  $ UR                  [        R                  5      (       a  [        R                  $ UR                  (       a  g g r<   )
is_equivr   r/  r  TYPE_ANY	TYPE_NONErV  TYPE_STRINGrB  target_fundamental)rB   typevals     rE   &_get_transfer_default_returntype_basic6MainTransformer._get_transfer_default_returntype_basic4  s|    S0011S\\3==9::***coo..***''rH   c                 H   U R                   R                  U5      nU(       d   [        U5      5       eU R                   R                  U5      nU(       d   eX4L a  gUR                  (       a6  UR                  R                  S:w  a  U R                  UR                  U5      $ g)NTGObject.ObjectF)r=   lookup_typenodestrparent_typetarget_giname_is_gi_subclass)rB   r`  supercls_typeclssuperclss        rE   ri  MainTransformer._is_gi_subclassA  s    //8 CL s$$44]Cx???s<<@PP''GGrH   c                 l   UR                   nU R                  U5      nU(       a  U$ UR                  (       d  g U R                  R	                  U5      n[        U[        R                  5      (       a  U R                  UR                  5      $ [        U[        R                  5      (       dM  [        U[        R                  [        R                  45      (       a.  UR                  c  UR                  (       a  [        R                  $ [        U[        R                  [        R                   45      (       a  [        R"                  $ [        U[        R$                  5      (       a  UR&                  (       a  [        U[        R(                  5      (       am  [        R*                  " SS9n U R                  R	                  U5      nU(       a&  U R3                  X65      (       a  [        R"                  $ [        R                  $ [        U[        R                  [        R                  45      (       a  [        R                  $ [5        S5      e[        U[        R(                  [        R                  [        R                  45      (       a  g g ! [,         a    [.        R0                  " US5         g f = f)NzGObject.InitiallyUnownedrh  z0constructor found but GObject is not in includeszInvalid constructor)r   ra  rh  r=   re  rT   r   r   r   BoxedrX   rY   r   foreignrB  rc   rd   rV  r]   is_constructorr_   r  KeyErrorr   
error_noderi  r   )rB   r   ri   r`  basicr   initially_unowned_typeinitially_unowneds           rE   _get_transfer_default_return,MainTransformer._get_transfer_default_returnL  s   ));;GDL$$""227;fcii((>>v}}MM++Vcjj#))%<==((4***3<< 899***--&2G2G&#)),,),@Z)[& (,(9(9(I(IJ`(a% %)=)=g)^)^222222FSZZ$;<<...$%:;;CJJ		 BCC    &&t-_` s   -J !J32J3c                 b   UR                   R                  [        R                  5      (       d)  [	        UR                   [        R
                  5      (       a  [        R                  $ [	        U[        R                  5      (       a  U R                  X5      $ [	        U[        R                  5      (       a  U R                  X5      $ [	        U[        R                  5      (       a  [        R                  $ [	        U[        R                  5      (       a  [        R                  $ [        U5      er<   )r   r[  r   r]  rT   VarargsrV  r   rX  r'  rx  FieldPropertyr   rW  s      rE   r   %MainTransformer._get_transfer_defaults  s    99cmm,,
499ckk0R0R***cmm,,33FAAcjj))44VBBcii((***cll++*** &&rH   c                    [        U[        R                  5      (       d/  UR                  [        R                  [        R
                  4;   a  gU R                  R                  UR                  5      nU R                  R                  U5      nUc  UR                  OUn[        U[        R                  5      (       + =(       d5    U[        R                  ;  =(       d    UR                  R                  S5      $ )NTr8  )rT   r   r'  r@  rA  rT  r=   re  r   resolve_aliasesr  BASIC_TYPESr   r=  )rB   ri   r   r   s       rE   _is_pointer_type MainTransformer._is_pointer_type  s    4,,3#:#:#&#<#<#> >""22499=""226:$n&vsxx00 +coo-+%%c*	,rH   c                    UR                  [        5      nU(       a  [        U5      S:w  a  g US   nU R                  R	                  UR
                  5      nU R                  R                  U5      nUc  UR
                  OUn[        U[        R                  5      (       a  UOUR
                  nU[        :X  a  [        n[        U[        R                  [        R                  45      (       dQ  UR                  S:w  aA  UR                  S:w  a1  [        R                   " SR#                  U5      UR$                  5        g GOxU[&        :X  az  [(        U;  ao  [        U[        R*                  [        R,                  [        R.                  45      (       d1  [        R                   " SR#                  U5      UR$                  5        g OU R1                  X#5      (       d  U[        R2                  [        R4                  4;  a  [        U[        R*                  [        R,                  [        R.                  [        R6                  [        R8                  [        R:                  [        R                  [        R                  45      (       d1  [        R                   " SR#                  U5      UR$                  5        g XRl        g )Nr   r   zGLib.VariantzGObject.ClosurezYinvalid "transfer" annotation for {0}: only valid for object, GVariant and GClosure typeszEinvalid "transfer" annotation for {0}: only valid for container typeszminvalid "transfer" annotation for {0}: only valid for array, struct, union, boxed, object and interface types)r   r$   r   r=   re  r   r  rT   r   r  r5   r6   r_   r`   rh  r   r  r   ru   r4   r   r   r  r  r  r^  TYPE_FILENAMErX   r?  rp  r   )rB   r   ri   r   transfer_annotationr   r   	node_types           rE   _apply_transfer_annotation*MainTransformer._apply_transfer_annotation  s   )ool;"c*=&>!&C&q)""22499=""226:$n&(::F			,,(Hv		3=='ABB!//>A!//3DD RRXRXY_R`(113 //,"6CIIsxx+IJJ >>DfVn(113 ''::1B1BCCVcii377&)jj#,,		&)ii&@ A A LL 66<fVn$--/  rH   c                 f	   U(       a  UR                   O0 nUR                  [        5      nU(       a%  U R                  US   UR                  X!5      Ul        SnS n[
        U;   a  [        R                  nGOC[        U;   Ga  [        R                  nU[           n[        U5      S:X  a  UR                  R                  (       a  UR                  R                  (       a  U R                  R                  UR                  R                  5      n	U R                  R                  U	5      n	SUR                  R                  ;   n
[!        U	[        R"                  [        R$                  45      nU
(       + =(       a    UnO<SnO9US   nU[&        :X  a  SnO'U[(        :X  a  SnO[*        U;   a  [        R,                  nUb1  XrR.                  :w  a"  Xrl        Xbl        U R3                  X5      Ul        U R7                  XU5        U R9                  XU5        UR                  R;                  [        R<                  5      (       a  SUl        [@        U;   aF  U RC                  X$5      (       a  SUl        SUl"        O![F        RH                  " SURJ                  5        [L        U;   av  [!        U[        RN                  5      (       d6  UR.                  [        R                  [        R                  4;   a  SUl(        O![F        RH                  " SURJ                  5        [R        U;   a  UR.                  [        R                  :X  a'  [!        U[        RN                  5      (       d  SUl(        O?U RC                  X$5      (       a  SUl        O![F        RH                  " SURJ                  5        UR.                  [        R                  :w  a;  UR                  R                  S:X  d  UR                  R                  S	:X  a  SUl        [T        U;   a  SUl        SUl"        U(       a3  URV                  (       a"  URV                  Ul,        URJ                  Ul-        [\        U;   a  SUl/        U(       aJ  UR                  [`        5      nUb1  URc                  5        H  u  pU(       d  M  XRd                  U'   M     g g g )
Nr   Fz**TzNinvalid "nullable" annotation: only valid for pointer types and out parameterszFinvalid "optional" annotation: only valid for out and inout parameterszPinvalid "allow-none" annotation: only valid for pointer types and out parametersGio.AsyncReadyCallbackzGio.Cancellable)3r   r   r%   r$  r   r   r   rT  r   rA  r   rh  r   r=   lookup_ginamer  rT   rX   rY   r3   r2   r   PARAM_DIRECTION_INr@  rU  r   r   r  r   r[  r\  nullabler)   r  not_nullabler   r  ru   r*   r'  optionalr
   r+   rr   rt   rv   r#   skipr   rp   
attributes)rB   r   ri   r   r   type_annotationrU  annotated_directionoptionsr   has_double_indirectionis_structure_or_unionoptionattributes_annotationkeyvalues                   rE   #_apply_annotations_param_ret_common3MainTransformer._apply_annotations_param_ret_common  s   ),coo"%//(3..q/A/3yy$HDI !"#"%";";#"%"9"9!'*G7|q 99**tyy!..<<TYY=T=TUF!..>>vFF-1TYY__-D*,6v

CII?V,W),B(B(\G\$',$ 55'+$77',${""%"8"8+2E2W0N$4! 66vDDM''kB##F+> 99cll++ DM;&$$T77 $$)! O(113 ;&tSZZ00NNs'>'>'*'@'@'B B $ G(113 [(#"9"99"444 $&&t99 $ O(113 NNc555((,DD((,== DM k!!DM $D3??DH #D{"DI$/OON$C!$0"7"="="?JCu/4, #@ 1 rH   c                    Uc  g UR                   (       a"  UR                   Ul        UR                  Ul        UR                  R                  [        5      nUbD  UR                  (       a  UR                  Ul        UR                   (       a  UR                   Ul	        UR                  R                  [        5      nUbD  UR                  (       a  UR                  Ul        UR                   (       a  UR                   Ul        UR                  R                  [        5      nUbD  UR                  (       a  UR                  Ul        UR                   (       a  UR                   Ul        UR                   R                  ["        5      nUb0  UR%                  5        H  u  pxU(       d  M  XR&                  U'   M     [(        UR                   ;   a  SUl        [,        UR                   ;   a  SUl        [0        UR                   ;   a&  [3        U[4        R6                  5      (       a  SUl        [:        UR                   ;   a  SUl        UR                   R                  [>        5      n	U	b)  [3        U[4        R6                  5      (       a
  U	S   Ul         UR                   R                  [B        5      n
U
b+  [3        U[4        R6                  5      (       a  U
S   Ul"        g g g )NTr   )#rr   rt   ru   rv   r(  r   r   r  versionversion_docr   
deprecateddeprecated_docr   	stabilitystability_docr   r   rp   r  r#   r  r   rq  r   rT   r   r]   rr  r   r   r    set_propertyr   get_property)rB   ri   ry   	since_tagdeprecated_tagstability_tagr  r  r  r  r  s              rE   r   ,MainTransformer._apply_annotations_annotated#  s   =((DH %DJJNN9-	 ($$#,#8#8 7%##"0"6"6))&4&@&@#

}5$""!.!4!4((%2%>%>" % 1 1 5 5n E ,399;
5+0OOC( < u(((DI%+++DLe///JtS\\4R4R"&D***!DN((,,-=>#
4(F(F ,QD((,,-=>#
4(F(F ,QD )G#rH   c                 H    U R                  U5      nU R                  X5        g r<   )r   r   r   s       rE   r   (MainTransformer._apply_annotations_aliasZ  s    %))$6rH   c                    U(       a  UR                   O0 nU R                  R                  UR                  5      nU R                  R	                  U5      n[        U[        R                  5      (       dE  [        [        [        4 H/  nXd;   d  M
  [        R                  " SU S3UR                  5        M1     g UR                  [        5      nU(       a  [        U5      S:X  a
  US   Ul        UR                  [        5      nU(       a{  [        U5      S:X  al  U R#                  XS   U5      Ul        UR$                  bE  [        R&                  Ul        UR)                  UR$                  5      n	[        R&                  U	l        UR                  [        5      n
U
(       a  [        U
5      S:X  a  U R#                  XS   U5      Ul        UR)                  UR*                  5      nU R                  R                  UR                  5      nU R                  R	                  U5      n[        U[        R,                  5      (       d  UR                  nU[        R.                  :w  a"  [        R                  " SUR                  5        g g g g )Nz	invalid "z/" annotation: only valid on callback parametersr   r   ?invalid "closure" annotation: only valid on gpointer parameters)r   r=   re  r   r  rT   r   r   r   r   r   r   r  ru   r   r   scoper   destroy_namePARAM_SCOPE_NOTIFIEDr   closure_namer  r\  )rB   r   r   r   r   r   annscope_annotationdestroy_annotationdestroy_paramclosure_annotationclosure_paramclosure_targets                rE   !_apply_annotations_param_callback1MainTransformer._apply_annotations_param_callback^  s   ),coo"""225::>""226:&#,,//!;<%LL9SE1`!acncwcwx = &??95$4 5 :*1-EK(__[9#&8"9Q">!%!B!B6^_K`bg!hE!!-!66 & 4 4U5G5G H '*&>&>#(__[9#&8"9Q">!%!B!B6^_K`bg!hE"001C1CDM!..>>}?Q?QRN!..>>~NNnchh77!.!3!3-^`k`t`tu . #?rH   c                 4   U(       a  UR                   O0 n[        U;  a  g UR                  [        5      n[        U5      S:w  a"  [        R
                  " SUR                  5        g UR                  Ul        U R                  R                  UR                  5      nU R                  R                  U5      n[        U[        R                  5      (       d  UR                  nU[        R                   :w  a"  [        R
                  " SUR                  5        g g )Nr   z=invalid "closure" annotation with argument on a callback typer  )r   r   r   r   r   r  ru   r   r  r=   re  r   r  rT   r   r  r\  )rB   r   r   r   r   r  r   s          rE    _apply_annotations_param_closure0MainTransformer._apply_annotations_param_closure  s    ),coo"k)(__[9!"a'LLXZeZnZno #]]""225::>""226:&#((++ZZFS\\!LLZ\g\p\pq "rH   c                    [        U[        R                  [        R                  45      (       a  U R	                  XU5        O1[        U[        R
                  5      (       a  U R                  XU5        U R                  XU5        g r<   )rT   r   r]   	VFunctionr  r   r  r  )rB   r   r   r   ry   s        rE   _apply_annotations_param(MainTransformer._apply_annotations_param  s]    fs||S]];<<226#F--11&E00DrH   c                    U(       a   UR                   R                  [        5      nOS nUbO  UR                  [        R
                  :X  a1  [        R                  " UR                  < S3UR                  5        S nU R                  XU5        g )Nz: invalid return annotation)r(  r   r	   r   r   r]  r   r  rZ   ru   r  )rB   r   return_ry   r   s        rE   _apply_annotations_return)MainTransformer._apply_annotations_return  sa    **..-CC?w||s}}<LLEJJH'C00#FrH   c                    [        / 5      nUR                  (       az  U(       a0  UR                  R                  UR                  R                  5      nOS nU R                  XR                  XS5        UR                  UR                  R                  5        U H_  nU(       a&  UR                  R                  UR                  5      nOS nU R                  XXS5        UR                  UR                  5        Ma     U(       d  g [        UR                  5      nXt-
  nXG-
  n	U H  n
[        U	5      S:X  a  SnO@[        U	5      S:X  a  U	u  nSU< S3nO%SSR                  S [        U	5       5       5      < 3nUR                  R                  U
5      n[        R                  " UR                  < S	U
< S
U< 3UR                  5        M     g )Nr   r   r   z, should be 'r   z, should be one of z, c              3   ,   #    U  H
  nS U-  v   M     g7f)z'%s'N ).0ps     rE   	<genexpr><MainTransformer._apply_annotations_params.<locals>.<genexpr>  s     !En&1*ns   z: unknown parameter 'z' in documentation comment)setr   r   r   r   r  addr   joinsortedr   r  rZ   ru   )rB   r   r   ry   
declparamsr   r   	docparamsunknownunuseddoc_namer  s               rE   _apply_annotations_params)MainTransformer._apply_annotations_params  so   W
$$!LL,,V-F-F-N-NO	 	))&2K2KY^NN644<<=E!LL,,U]];	 	))&JNN5==)  %	('H6{aV!"	-25 "
 		!EfVn!EEI LL$$X.ELL(-

HdD   rH   c                 ^   Ub  UR                   R                  [        5      nUb)  [        U[        R
                  5      (       a
  US   Ul        UR                   R                  [        5      nUb)  [        U[        R
                  5      (       a
  US   Ul        UR                   R                  [        5      nUb)  [        U[        R
                  5      (       a
  US   Ul
        U R                  X5        U R                  XR                  U5        U R                  XR                  U5        g Nr   )r   r   r,   rT   r   r   finish_funcr-   	sync_funcr.   
async_funcr   r  r   r  r   )rB   ri   r   ry   r  r  r  s          rE   r   +MainTransformer._apply_annotations_callable  s    ++//@K&:dCLL+I+I#.q> ))--m<I$D#,,)G)G!*1**..~>J%*T3<<*H*H",Q-))$6&&t__eD&&t[[%@rH   c                 r   U R                   R                  U R                  U5      < SUR                  < 35      nU(       a  U R	                  X45        UR
                  nOcU(       d  g UR                  R                  UR                  5      nU(       d  g UR
                  nUR                  Ul        UR                  Ul
        UR                  [        5      nU(       a#  U R                  R                  US   5      Ul         U R                  XU5        g ! [          a  n[#        U5         S nAg S nAff = f)N.r   )r>   r   r   rZ   r   r   r   rr   rt   ru   rv   r%   r=   r
  r   r   AttributeErrorprint)	rB   r   parent_blockr   ry   r   r   r  exs	            rE   r   (MainTransformer._apply_annotations_field  s      D,E,Ef,Muzz!Z[ --e;++K%%))%**5C//KEI!$E%//(3**GGXYHZ[EJ	''{C 	"II	s   D 
D6!D11D6c                    U R                  U5      nU R                  R                  U< SUR                  < 35      nU R	                  X$5        U(       d  g UR
                  R                  [        5      nUb  US   nU[        :X  a  [        nXbl	        OU R                  X5      Ul	        UR
                  R                  [        5      nU(       a%  U R                  US   UR                  X!5      Ul        UR
                  R                  [        5      nU(       a
  US   Ul        UR
                  R                  [         5      n	U	(       a
  U	S   Ul        UR
                  R                  [$        5      n
U
(       a  U
S   Ul        g g )N:r   )r   r>   r   rZ   r   r   r$   r5   r6   r   r   r%   r$  r   r"   setterr   getterr   default_value)rB   r   r   prefixry   r  r   r  r  r  r  s              rE   r   +MainTransformer._apply_annotations_property  s;   **62  FDII!>?))$6#//33LA**1-H00,$M 66vDDM++//9..q/A499d[DI""&&z2 )DK""&&z2 )DK))--.?@!.q!1D rH   c                    / nU R                  U5      nU R                  R                  U< SUR                  < 35      nU(       Ga  U R	                  X%5        UR
                  R                  [        5      nU(       a
  US   Ul        [        UR                  5      [        UR                  5      :  a]  UR                  R                  5        VVs/ s H  u  pxXx4PM
     nnn[        UR                  5       H  u  pX9S-      u  U
l        nM     O:[        UR                  5      S:w  a!  [        R                  " SUR                   5        [        UR                  5       H|  u  pU(       a\  X9S-      u  pU(       aK  UR
                  R                  ["        5      nU(       a%  U R%                  US   U
R&                  X5      U
l        OS nU R)                  X*X5        M~     U R+                  X"R,                  U5        g s  snnf )N::r   r   zWincorrect number of parameters in comment block, parameter annotations will be ignored.)r   r>   r   rZ   r   r   r   emitterr   r   r   rp   	enumerater   r   r  ru   r%   r$  r   r  r  r   )rB   r   signalrJ   r  ry   r  kvir   r   rZ   r  s                 rE   r   )MainTransformer._apply_annotations_signal  s   **62  VV[[!AB--f<''++K8G!(
 5<< 3v'8'8#99,1LL,>,>,@A,@DA!,@A !*&*;*; <HA).1u&EM3 !=V&&'1,  FGL~~W "&"3"34HA!a%L	&)oo&9&9(&CO&%)%;%;OA<NPUPZPZ<A&K
 ))&D 5 	&&v}}eD- Bs   G>c                     U R                  U5      nUc  g U R                  X5        UR                  R                  [        5      nU(       a  US   Ul        g g r  )r   r   r   r   r'   r  )rB   ri   ry   value_annotations       rE   r   +MainTransformer._apply_annotations_constantE  sQ    %=))$6 ,,00;)!,DJ rH   c                    UR                    H  nU R                  R                  UR                  5      nU(       a  U R	                  X45        MB  U(       d  MK  UR
                  R                  UR                  5      nU(       d  My  UR                  (       d  M  UR                  Ul        UR                  Ul	        M     g r<   )
membersr>   r   r   r   r   rr   rt   ru   rv   )rB   ri   r  mry   r   s         rE   r   /MainTransformer._apply_annotations_enum_membersP  s    ALL$$QXX.E11!;$++//9$$$!--AE%*^^AN rH   c                 R   [        U[        R                  5      (       Ga  U R                  R	                  UR
                  5      nU R                  XU5        U R                  X5        U(       a  US   OS nU(       a  U(       a  UR                  R	                  [        5      nU(       a}  US   nSnUR                   H;  nUR                  U:X  d  M  SnUR                  Ul        U R                  X/U5          O   U(       d$  [        R                  " USU< S[        < S35        g)Nr9  r   FTzVirtual slot 'z' not found for 'z' annotation)rT   r   r]   r>   r   r   r   r   r   r(   virtual_methodsrZ   invokerr   r   r   )	rB   ri   r   ry   r   virtual_annotationinvoker_namematchedvfuncs	            rE   rf   'MainTransformer._pass_read_annotations2`  s    dCLL))LL$$T[[1E,,T%@**47 #(U2YTF&%*%6%6%:%:9%E"%#5a#8L#G!'!7!7 ::5&*G,0IIEM <<UHeT! "8 #))$Q]MVXY rH   c                     [        U5      nU H8  nU R                  R                  U5      nU(       a  M'  UR                  U5        M:     U$ )zhGiven a list of Type instances, return a new list of types with
the ones that failed to resolve removed.)r\   r=   resolve_typeremove)rB   typelistnew_typelistr`  r  s        rE   _resolve_and_filter_type_list-MainTransformer._resolve_and_filter_type_list{  sH     H~G((55g>H8##G,   rH   c                    [        U[        R                  5      (       a%  U R                  R	                  UR
                  5        [        U[        R                  5      (       ag  UR                   H(  nU R                  R	                  UR                  5        M*     U R                  R	                  UR                  R                  5        [        U[        R                  5      (       a%  U R                  R	                  UR                  5        [        U[        R                  [        R                  [        R                  [        R                  45      (       aK  UR                    H;  nUR"                  (       a  M  U R                  R	                  UR                  5        M=     [        U[        R                  [        R                  45      (       Ga  UR$                   HI  n U R                  R	                  U5        U R                  R)                  U5      nU(       d  MC  XQl          O:   [        U[        R                  5      (       a  [        R,                  " SS9Ul        UR.                   H(  nU R                  R	                  UR                  5        M*     UR0                   H;  nUR                   H(  n	U R                  R	                  U	R                  5        M*     M=     [        U[        R                  5      (       a   U R3                  UR4                  5      Ul        [        U[        R                  5      (       a   U R3                  UR6                  5      Ul        g! [&         a     GM  f = f)Nrd  ro  T)rT   r   r   r=   r  r   r   r   r   r   r   rQ  r_   r`   rX   rY   r}   r~   parent_chainr   re  rg  r  r   r   r
  
interfacesprerequisites)
rB   ri   r   	parameterr   r   r   r   r   r   s
             rE   rN   %MainTransformer._pass_type_resolution  sU   dCII&&**4;;7dCLL))!__	!!..y~~> -**4;;+;+;<dCLL))**4??;dSYYszz399MNN''%%225::>	 %
 dSYY677++%%226: **::6B6'-$ , dCMM22'*xx>N'OD$!!..tyy9 (|| ^^E%%225::> , $ dCII&&"@@QDOdCMM**!%!C!CDDVDV!WD% " s   'M**
M98M9c                 l   0 nU R                   R                  5        HY  n[        U[        R                  5      (       d  M$  [        UR                  5      R                  5       nX!U'   X!UR                  '   M[     U R                   R                  5        GH  n[        U[        R                  5      (       d  M%  UR                  S [        S5      *  nU R                  R                  UR                  5      u  pgUS [        S5      *  nUS:X  a8  U R                   R                  S:X  d   eU R                   R                  S5      nO/U R                  R                  U5      nUc  UR                  U5      nUb  UR                  Ul        M  [         R"                  " UUR                  < S35        GM     g )N_quark
g_io_errorGioIOErrorEnumz): Couldn't find corresponding enumeration)r@   rS   rT   r   rc   r7   rZ   r[   ErrorQuarkFunctionr   r   r=   split_csymbolr   rA   error_domainr   r   )rB   uscore_enumsenumrj   ri   fullnsshorts           rE   rh   'MainTransformer._pair_quarks_with_enums  s`   
 OO**,DdCHH---dii8>>@G$(!&*# - OO**,DdC$:$:;;;;X/D))77DIB/CM>*E|#++u444**=9..2259<'++E2D$($5$5!!!$IMWY# -rH   c                     SnSnSn UR                  SU5      n[        U5      U:X  a  g[        U5      nUS   nU R                  R                  U5      nU(       a  USR	                  USS 5      4$ US-  nMq  )a1  'uscored' should be an un-prefixed uscore string.  This
function searches through the namespace for the longest type which
prefixes uscored, and returns (type, suffix).  Example, assuming
namespace Gtk, type is TextBuffer:

_split_uscored_by_type(text_buffer_try_new) -> (ast.Class(TextBuffer), 'try_new')Nr   r9  r|   r   )rsplitr   rA   r   r  )rB   rj   ri   countprev_split_count
componentstype_strings          rE   _split_uscored_by_type&MainTransformer._split_uscored_by_type  s      U3J:"22":$Q-K**..{;Dchhz!"~677QJE rH   c                    UR                   R                  S5      (       d  UR                  5       (       a  gU R                  R	                  UR                   5      u  p#X R
                  :X  d   eU R                  X5      (       a  U R                  X5        gU R                  X5      (       a  U R                  X5        gU R                  X5      (       a  gg)zXCheck to see whether a toplevel function should be a
method or constructor of some type.r|   N)r   rq   is_type_meta_functionr=   r  r@   _is_constructor_set_up_constructor
_is_method_setup_method_pair_static_method)rB   r)  r  	subsymbols       rE   r^   MainTransformer._pair_function  s    
 ;;!!#&&$*D*D*F*F++99$++F__$$$00$$T5__T--t/%%d66 7rH   c                 T    UR                  5       n[        U5      R                  5       $ )z;Given a Type(target_giname='Foo.BarBaz'), return 'bar_baz'.)
get_ginamer7   r[   )rB   r`  rZ   s      rE   _uscored_identifier_for_type,MainTransformer._uscored_identifier_for_type  s$    !!#&t,2244rH   c                    UR                   (       d7  UR                  (       a%  [        R                  " UUR                  < S35        gUR                   S   nU R
                  R                  UR                  5      n[        U[        R                  [        R                  [        R                  [        R                  [        R                  45      (       d7  UR                  (       a%  [        R                  " UUR                  < S35        gUR                  U R                   :w  a7  UR                  (       a%  [        R                  " UUR                  < S35        gUR"                  [        R$                  [        R&                  4;   aE  UR                  (       a3  [        R(                  " UUR                  < SUR"                  < S35        gUR                  R*                  b*  UR                  R*                  R-                  S5      S	:  a  gUR                  (       d(  U R/                  X5      nUR1                  U5      (       d  gg
)Nz: Methods must have parametersFr   z6: Methods must have a pointer as their first parameterzG: Methods must belong to the same namespace as the class they belong toz.: The first argument of a method cannot be an z	-argumentr8  r   T)r   r   r   r   r   r=   re  r   rT   r   r_   r`   rX   rY   rp  r?   r@   r@  rA  rT  rt  r   r"  _get_uscored_prefixrq   )rB   r)  r/  r  r   uscored_prefixs         rE   r,  MainTransformer._is_method  s   ~~!!$:>++HJ"""225::>&399cmm#&::syy#&99#. / / ~~!!$#';;23 t.~~!!$.2kk=> ??s66"88: :~~""4%)[[%//CD  ::'EJJ,<,<,B,B3,G!,K~~!55dFN''77rH   c                 z   U R                  X5      nU R                  R                  UR                  S   R                  5      nUR
                  (       d  UR                  US-   5      (       d  UR                  5       nUR                  Ul	        UR                  R                  S5      Ul        UR                  R                  U5      nUR                  U[        U5      -   S-   S  Ul        SUl        UR                  R!                  U5        g UR                  R                  S5      Ul        U R"                  R%                  U5        UR
                  (       dE  UR                  R                  U5      nUR                  U[        U5      -   S-   S  Ul        SUl        UR                  R!                  U5        g )Nr   r|   r   T)r6  r=   re  r   r   r   rq   r<  rZ   moved_tor   r   r   findr   methodsrw   r@   float)rB   r)  r/  r7  r   newfunc
subsym_idxs          rE   r-  MainTransformer._setup_method%  sT   11$B""224??13E3J3JK~~i&:&:>C;O&P&P jjlG#yyG)0););)?)?)BG&)))4J;;
S5H(H1(L'NOGL $GNN!!'*&*oo&9&9!&<D#OO!!$'>>![[--i8
 KKc.6I)IA)M(OP	!%NN!!$'rH   c                 R   SnS nUR                   S   nU R                  R                  UR                  5      n[	        US5      (       a;  UR
                  b.  UR                  UR
                  5      nU(       a  UR
                  nU(       d  U R                  UR                  5      nU$ )NFr   rW   )r   r=   re  r   hasattrrW   rq   r3  )rB   r)  r/  prefix_matchesr7  	first_argr   s          rE   r6  #MainTransformer._get_uscored_prefixG  s     OOA&	""229>>B6,--&2H2H2T&11&2H2HIN!'!7!7!>>y~~NNrH   c           	      x   U R                  U5      nUc  gUu  pEUS:X  a  g[        U[        R                  5      (       a=  U R                  R                  U5        XQl        UR                  R                  U5        g[        U[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  45      (       aS  UR                  5       nXVl        UR                  R                  U5        UR                  S-   UR                  -   Ul        gg)NFr   Tr  )r&  rT   r   r_   r@   r=  rZ   static_methodsrw   r`   rX   rY   rp  rc   rd   r<  r:  )rB   r)  r/  r   ri   funcnamenew_funcs          rE   r.  #MainTransformer._pair_static_method[  s    ++I6= r>dCII&&OO!!$' I&&t,s}}cjj#))"yy#((CLLB C C zz|H$M&&x0 !IIOhmm;DMrH   c                 Z   U R                   R                  U5        U R                  X5      Ul        U R	                  X5      nUR
                  R                  U5        SUl        UR                  R                  (       d,  U R                  UUR                  5      UR                  l	        g g r   )r@   r=  _get_constructor_namerZ   _get_constructor_classconstructorsrw   rr  r   r   rx  )rB   r)  r/  origin_nodes       rE   r+  #MainTransformer._set_up_constructor~  s    d#..t?	11$B  ''-" {{###'#D#DTKK$!DKK  $rH   c                     S nU R                  U5      nUcB  UR                  (       a/  U R                  R                  UR                  R
                  5      nU$ Uu  p5U$ r<   )r&  rr  r=   re  r   r   )rB   r)  r/  rO  r   r|   s         rE   rM  &MainTransformer._get_constructor_class  s\    ++I6="""//??@P@PQ  #NKrH   c                 d   SnS nU R                   R                  UR                  R                  5      n[	        US5      (       a;  UR
                  b.  UR                  UR
                  5      nU(       a  UR
                  nU(       d%  U R                  UR                  R                  5      nU R                  U5      nUcl  UR                  (       aY  XAR                  ;   a>  UR                  R                  U5      nUR                  U[        U5      -   S-   S  Ul        UR                  nW$ Uu  pU$ )NFrW   r   )r=   re  r   r   rB  rW   rq   r3  r&  rr  r   r;  r   rZ   )
rB   r)  r/  rC  r7  r   r   r?  rZ   r|   s
             rE   rL  %MainTransformer._get_constructor_name  s   ""224;;3C3CD6,--&2H2H2T&11&2H2HIN!'!7!7!>>t{{?O?OPN++I6=""![[0!%!1!1)!<J $Z#n:M-MPQ-Q,S TDIyy  GArH   c                 n    UR                  S5      (       a  gSU;   a  gUR                  S5      (       a  gg)N_newT_new__newvF)r=  )rB   r   s     rE   _guess_constructor_by_name*MainTransformer._guess_constructor_by_name  s4    ??6""f??7##rH   c                    UR                   (       d!  U R                  UR                  5      (       d  gU R                  R	                  UR
                  R                  5      n[        U[        R                  5      (       d  [        U[        R                  [        R                  [        R                  45      (       a  UR                  cH  UR                  (       d7  UR                   (       a%  [        R                   " UUR                  < S35        gU R#                  X5      nUc8  UR                   (       a&  [        R                   " USUR                  < S35        g[        U[        R                  5      (       d]  [        U[        R                  [        R                  [        R                  45      (       a  UR                  c  UR                  (       d  gUR$                  U R&                  :w  a7  UR                   (       a%  [        R                   " UUR                  < S35        gUR                   (       di  [)        UR*                  5      S:  aP  U R                  R	                  UR*                  S   R                  5      nUb  UR,                  UR,                  :X  a  g[        U[        R                  5      (       a  UnU(       a  UR,                  S:X  d  Xc:X  a   gUR.                  (       a&  U R                  R	                  UR.                  5      nOS nUcc  [        R                   " USUR                  < S	[1        UR3                  5       5      < S
[1        UR
                  R                  5      < S35        gU(       a  UR,                  S:X  d  M  gXC:w  ac  [        R                   " USUR                  < S	[1        UR3                  5       5      < S
[1        UR
                  R                  5      < S35        gg)NFz5: Constructors must return an instance of their classz2Can't find matching type for constructor; symbol='r   zL: Constructors must belong to the same namespace as the class they belong tor   rd  z8Return value is not superclass for constructor; symbol='z' constructed='z
' return='z)Constructor return type mismatch symbol='T)rr  rY  r   r=   re  r   r   rT   r   r_   rX   rY   rp  rV   rq  r   r   rM  r?   r@   r   r   gi_namerg  rf  create_type)rB   r)  r/  r   rO  rD  r   s          rE   r*  MainTransformer._is_constructor  s   ""224;;??""224;;3C3CD6399--v

CIIsyy'IJJ4""!!${{&' 11$B""!!OS{{]_  ;		22{SZZCII,NOO$--9[=P=P  DOO3""!!$.2kk=> ""s4??';a'?))99$//!:L:Q:QRI%9+<+<@S@S+Sfcii(( F&..4D"D#. - %%!..>>v?Q?QRF!F>%%d (,{{'*;+B+B+D'E'*4;;+;+;'<	'>? ! &..4D"D2  $!!$ $(;;#&{'>'>'@#A#&t{{'7'7#8	#:; rH   c                    UR                   (       d  gUR                  5       nU R                  R                  UR                   5      nUR                   H+  n[        U[        R                  5      (       d  M$  SUl        M-     UR                   GH  nSn[        UR                  [        R                  5      (       a  UR                  nOVUR                  bG  U R                  R                  UR                  5      n[        U[        R                  5      (       d  M  OM  [        UR                  5      S:X  a  M  UR                  S   R                  nXb:w  a  M  [        R                  R                  UR                   U5      nUR                  S   Ul        UR%                  U5        U R'                  U5      nU R(                  R+                  U< SUR                   < 35      n	U	c"  UR,                  Ul        UR.                  Ul        U R1                  Xq/U	5        UR2                  R5                  U5        GM     UR2                   GH;  nUR6                   GH&  n
U
R                   UR                   :w  a  M   U
R8                  R                  UR8                  R                  :w  a  MP  [        U
R                  5      [        UR                  5      :w  a  M~  [;        [        U
R                  5      5       H<  nU
R                  U   R                  nUR                  U   R                  nX:w  d  M<  M>     U
R                   Ul        U R(                  R+                  U
R>                  5      n	U R1                  U/ U	5          GM9     GM>     g)z2Look for virtual methods from the class structure.NFr   r  ) glib_type_structr]  r=   re  r}   rT   r   r|  writabler~   r   r   r   r   r  from_callbackrZ   r   inherit_file_positionsr   r>   r   rt   rv   r   r  rw   r<  r   ranger  r   )rB   ri   r  class_structr   callbackfirstparam_typer  r  ry   methodr  m_typev_types                 rE   ra   $MainTransformer._pair_class_virtuals   s   $$ $$&	((889N9NO "((E%++!& ) "((EH%..== //',,<<UZZH!(CLL99 :  8&&'1,&11!499O+MM//

HEE'/':':1'=E$((2..|<F LL$$%DEE}!II	%*%7%7",,UFEB  ''.= )F ))E,,;;%**,==%%):)::v(()S1A1A-BBs6#4#456A#..q166F"--a055F' 	 7
 !' ((700EB# ' *rH   c                    UR                    GH  nUR                  R                  SS5      nUR                  (       d  M3  Sn/ nUR                  c(  UR
                  (       a  UR                  (       d  SU-   nOUR                  nUR                  c  UR                  (       a  SU-   /nUR                  R                  [        R                  5      (       a*  UR                  S5      (       d  UR                  SU 35        UR
                  (       d?  UR                  R                  [        R                  5      (       a  UR                  U5        OUR                  /nUR                   GH  nUR                  (       d  M  Ub  UR                  U:X  a  UR                   c  UR                  Ul        OmUR                   UR                  :w  aS  ["        R$                  " USUR&                  < SUR                  < S	UR                   < S
35        UR                  Ul        UR                  Ul        M  U/ Ld  M  UR                  U;   d  M  UR(                  c  UR                  Ul        OmUR(                  UR                  :w  aS  ["        R$                  " USUR&                  < SUR                  < SUR(                  < S
35        UR                  Ul        UR                  Ul        GM     GM     g)z.Look for accessor methods for class properties-r|   Nset_get_is_zSetter method 'z' for property 'z"' has a mismatched '(set-property z)' annotationzGetter method 'z"' has a mismatched '(get-property )r   rZ   replacer   r  ra  construct_onlyr  readabler   r[  r   TYPE_BOOLEANrq   rw   r<  r  r   r   r   r  )rB   ri   r   normalized_namer  r  rh  s          rE   rb   (MainTransformer._pair_property_accessorsH  s*   OOD"ii//S9O&&FF{{"==)<)<#o5F{{"==$67F yy))#*:*:;;OD^D^_dDeDeO+<&=>  ==TYY-?-?@P@P-Q-Qo6++,,,,%&++*?**2.2ii+,,		9))& ,2==$))VEXEX+Z[ /3ii+"(++DK#v(=**2.2ii+,,		9))& ,2==$))VEXEX+Z[ /3ii+"(++DK1 '1 $rH   c           	          UR                    H]  n[        R                  " SUR                  5      (       d  M+  [        R
                  " USUR                   SUR                   S35        M_     g)z6Validate the name of the members of enumeration types.z^[0-9]zMember z for enumeration z starts with a numberN)r  r   matchrZ   r   r   r   r   )rB   ri   members      rE   re   )MainTransformer._pass_member_numeric_name|  sV    llFxx	6;;//##D&-fmm_<Mdjj\ Z< %<= #rH   c                 n   [        U[        R                  5      (       aE  U R                  U5        U R	                  U5        U R                  U5        U R                  U5        g[        U[        R                  [        R                  45      (       a"  U R                  U5        U R                  U5        g)zCPass 3 is after we've loaded GType data and performed type
closure.T)rT   r   r   _pass3_callable_callbacks_pass3_callable_throws_pass3_callable_async_finish_pass3_callable_async_syncr_   r`   _pass3_class_async_finish_pass3_class_async_sync)rB   ri   r   s      rE   rg   MainTransformer._pass3  s     dCLL))**40''---d3++D1  syy#--899**40((.rH   c                     U R                  UR                  5        U R                  UR                  5        U R                  UR                  UR                  -   5        g r<   )_match_class_async_methodsr<  r  rG  rN  r   s     rE   r  )MainTransformer._pass3_class_async_finish  sG    ''5''(<(<=''(;(;d>O>O(OPrH   c                     U R                  UR                  5        U R                  UR                  5        U R                  UR                  5        g r<   )_match_class_sync_methodsr<  r  rG  r   s     rE   r  'MainTransformer._pass3_class_async_sync  s<    &&t||4&&t';';<&&t':':;rH   c           	         UR                   b  g UR                   H  nUR                  R                  b  UR                  R                  S;  a  M6  UR                  S-   nUR                  R                  S5      (       a  UR                  S S S-   nUR                  c  M  SUR                  R                  ;   d  M  X1R                  ;   a  X1l           g [        R                  " USU< SUR                  < S35        M     g )	NGAsyncReadyCallback_finish_asyncGAsyncResultCouldn't find ')' for the corresponding async function: 'r   )
r  r   r   r   rZ   r=  r   ctypesr   r   )rB   ri   r   	func_names       rE   r~  ,MainTransformer._pass3_callable_async_finish  s    '__Ezz'5::+;+;DY+Z		I-I		""8,, IIcrNY6	{{"4;;#5#55+'0$%%d $))-. %rH   c                 0   UR                   c  UR                  c  g UR                  R                  S5      (       a  UR                  S S nOUR                  S-   nUR                  c  g UR                  R                  UR                  5      nUc  g UR                  R                  U5      nUc  g UR                  R                  R                  UR                  R                  R                  :w  a  g SnUR                   H  nUR                  [        R                  :X  aT  UR                   H@  nUR                  [        R                  :X  d  M#  UR                  UR                  :X  d  M?    Mo     Sn  OvUR                  [        R                  :X  d  M  UR                   H@  nUR                  [        R                  :X  d  M#  UR                  UR                  :X  d  M?    M     Sn  O   U(       a#  UR                  Ul         UR                  Ul        g g Nr  r  _syncTF)r  r  rZ   r=  r   r   r   r   r   r   r@  r   r  rA  r  )rB   ri   	sync_namer  candidate_methodparam_matchedr   candidate_params           rE   r  *MainTransformer._pass3_callable_async_sync  s   >>%)9)9)AIIx((		#2I		G+I;;kkood&6&67;;??95#""((,<,C,C,H,H,N,NN%00E#"8"88'+O'11S5K5KK+00EJJ> (7
 %*MC$;$;;'2'='=O'11S5L5LL+00EJJ> (>
 %*M! 1" -22DN*.))' rH   c           	      l   U GH-  nUR                   b  M  UR                  S-   nUR                  R                  S5      (       a  UR                  S S S-   nSnUR                   H!  nUR                  R
                  S:X  d  M  SnM#     U(       d  M  SnU Ha  nU(       a    OYUR                  U:w  a  M  UR                   H3  nUR                  R
                  S:X  d  M  UR                  Ul         Sn  M_     Mc     U(       a  GM  [        R                  " USU< S	UR                  < S
35        GM0     g )Nr  r  r  Fr  TzGAsyncResult*r  r  r   )r  rZ   r=  r   r   r   r   r   )	rB   r<  rh  r  found_async_callback_paramr   found_finish_methodr  r  s	            rE   r  *MainTransformer._match_class_async_methods  s   F!!-i/I{{##H--"KK,y8	).& ++KK%%)>>15. , ."'$+ &#((I5'7'B'BO&++11_D-=-B-B*.2+	 (C %, '&!!&fkk+,5 rH   c                 t   U GH1  nUR                   c  UR                  c  M   UR                  R                  S5      (       a  UR                  S S nOUR                  S-   nSnU H_  nUR                  R
                  R                  nUR                  UR                  :X  d  M?  UR                  R
                  R                  n  O   U GHd  nUR                  U:w  a  M  WUR                  R
                  R                  :w  a  Sn  GM  UR                   H  nUR                  [        R                  :X  aT  UR                   H@  n	U	R                  [        R                  :X  d  M#  U	R                  UR                  :X  d  M?    Mo     Sn  OvUR                  [        R                  :X  d  M  WR                   H@  n	U	R                  [        R                  :X  d  M#  U	R                  UR                  :X  d  M?    M     Sn  O   U(       d  GMA  UR                  Ul         UR                  Ul          GM/     GM4     g r  )r  r  rZ   r=  r   r   r   r   r@  r   r  rA  r  )
rB   r<  rh  r  r  finish_candidate_method	type_namer  r   r  s
             rE   r  )MainTransformer._match_class_sync_methods  s   F+v/A/A/I{{##H--"KK,	"KK'1	 M+2'3::??EE	*//63E3EE 7 > > C C I II	 ,3
 %, #((I5 0 7 7 < < B BB$)M-88E#*@*@@/5/@/@O / 9 9S=S=S S$3$8$8EJJ$F % 0A
 -2M!C,C,CC/F/Q/QO / 9 9S=T=T T$3$8$8EJJ$F % 0R
 -2M!! 9" !='7'<'<F$28++$/5 %, rH   c                    UR                   nU H  nU R                  R                  UR                  5      nU R                  R	                  U5      n[        U[        R                  5      (       d  Md  UR                  S;   d  Mv  [        R                  Ul
        [        R                  Ul        M     SnU GH9  nU R                  R                  UR                  5      nU R                  R	                  U5      nSn[        U[        R                  5      (       a  UR                  S:X  a  SnOUnM|  Uc  M  U(       a=  UR                  Ul        [        R                  Ul
        [        R                  Ul        M  UR                  R!                  [        R"                  5      (       d  M  UR                  c  GM  UR                  R%                  S5      (       d  GM(  UR                  Ul        GM<     U HS  nUR&                  c  M  UR)                  UR&                  5      nUS:  d   eX'   nUR*                  (       a  ML  SUl        MU     g)YCheck to see if we have anything that looks like a
callback+user_data+GDestroyNotify set.)r  GLib.DestroyNotifyNFr  Tdatar   )r   r=   re  r   r  rT   r   r   r\  PARAM_SCOPE_ASYNCr  rV  r   r   r  r  r[  r\  r=  r  get_parameter_indexr  r  )	rB   ri   r   r   argnodecallback_paramis_destroynotifyidxr  s	            rE   r|  )MainTransformer._pass3_callable_callbacks   s     E''77

CG''77@G'3<<00??&VV"%"7"7EK%(%<%<EN  E''77

CG''77@G$'3<<00??&::'+$%*N%.3mm+'*'?'?$*-*A*A'**%%cll33--+--((00.3mm+' * E!!-..u/A/ABaxx &$111-1M* rH   c                     UR                   (       d  gUR                   S   nUR                  R                  S:X  a"  UR                   R                  5         SUl        gg)r  Nr9  zGError**T)r   r   r   r   throws)rB   ri   
last_params      rE   r}  &MainTransformer._pass3_callable_throwsM  sL     __R(
 ??  J.OO!DK /rH   )r>   r@   r=   rA   )NNN)L__name__
__module____qualname____firstlineno__rF   rk   rR   rM   r   r   r   r   r   r   rO   rP   r   r   rQ   r   r   r$  r  r   r   r   rX  ra  ri  rx  r   r  r  r  r   r   r  r  r  r  r  r   r   r   r   r   r   rf   r
  rN   rh   r&  r^   r3  r,  r-  r6  r.  r+  rM  rL  rY  r*  ra   rb   re   rg   r  r  r~  r  r  r  r|  r}  __static_attributes__r  rH   rE   r9   r9   N   s   %;'~-"'6,.=7	?A3jC7r/&5#n%&N'	%N',*!Xf5P50n7#vJr0EG& PA"226&EP	-4 6	%NYB*&5
(T (D(!F!	,
DLFP2h=Q
<
.(&P,>(T+2Z
rH   r9   ):r   r   r   r   annotationparserr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   utilsr7   objectr9   r  rH   rE   <module>r     sk   ( 
   U U& & & & & & & & & &N	 	 	 +If IrH   