
    0h%                        S SK r S SKrSSKJr  SSKJr  SSKJrJr  \" 5       r	\	R                  S/5        S SKJr  \	R                  5         / SQr/ S	Qr\\-   r\" S
5      u  rrrrrrrrrrr\" S5      u
  rrr r!r"r#r$r%r&r'S r(Sr)Sr*Sr+Sr,Sr-Sr.S r/Sr0Sr1Sr2Sr3S r4Sr5\" S5      u  r6r7r8r9r:r;S r<S r= " S S\>5      r? " S S\>5      r@ " S S\>5      rg)    N   )Position)	CCompiler)have_debug_flagdll_dirszgio-2.0)SourceScanner)z.hz.hppz.hxx).cz.cppz.ccz.cxx   
                   @      c                     [         S[        S[        S[        S[        S[
        S[        S[        S[        S	[        S
[        S0R                  U 5      $ )Ninvalidellipsisconstobjectfunctionfunction_macrostructunionenumtypedefmember)CSYMBOL_TYPE_INVALIDCSYMBOL_TYPE_ELLIPSISCSYMBOL_TYPE_CONSTCSYMBOL_TYPE_OBJECTCSYMBOL_TYPE_FUNCTIONCSYMBOL_TYPE_FUNCTION_MACROCSYMBOL_TYPE_STRUCTCSYMBOL_TYPE_UNIONCSYMBOL_TYPE_ENUMCSYMBOL_TYPE_TYPEDEFCSYMBOL_TYPE_MEMBERget)symbol_types    5/lib/gobject-introspection/giscanner/sourcescanner.pysymbol_type_namer-   V   sP    izGXz#%5XG6iX' (+s;'78    c                     [         S[        S[        S[        S[        S[
        S[        S[        S[        S	[        S
0
R                  U 5      $ )Nr   voidbasicr   r   r   r   pointerarrayr   )CTYPE_INVALID
CTYPE_VOIDCTYPE_BASIC_TYPECTYPE_TYPEDEFCTYPE_STRUCTCTYPE_UNION
CTYPE_ENUMCTYPE_POINTERCTYPE_ARRAYCTYPE_FUNCTIONr*   )ctypes    r,   
ctype_namer?   e   sI    yF'yhWFyW

$ %(CJ
/r.   c                       \ rS rSr/ SQrS rS r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       rSrg)
SourceTypes   )type	base_typenametype_qualifier
child_listis_bitfieldfunction_specifierc                     Xl         X l        g N_scanner_stype)selfscannerstypes      r,   __init__SourceType.__init__w   s    r.   c                     SU R                   R                  < S[        U R                  5      < SU R                  < S3$ )N< type='z' name=''>)	__class____name__r?   rC   rE   rO   s    r,   __repr__SourceType.__repr__{   s,    NN##tyy!II 	r.   c                 .    U R                   R                  $ rK   )rN   rC   rZ   s    r,   rC   SourceType.type       {{r.   c                     U R                   R                  b*  [        U R                  U R                   R                  5      $ g rK   )rN   rD   rA   rM   rZ   s    r,   rD   SourceType.base_type   s2    ;;  ,dmmT[[-B-BCC -r.   c                 .    U R                   R                  $ rK   )rN   rE   rZ   s    r,   rE   SourceType.name   r_   r.   c                 .    U R                   R                  $ rK   )rN   rF   rZ   s    r,   rF   SourceType.type_qualifier   s    {{)))r.   c              #      #    U R                   R                   H   nUc  M  [        U R                  U5      v   M"     g 7frK   )rN   rG   SourceSymbolrM   rO   symbols     r,   rG   SourceType.child_list   s2     kk,,F~t}}f55 -s   <>c                 .    U R                   R                  $ rK   )rN   rH   rZ   s    r,   rH   SourceType.is_bitfield   s    {{&&&r.   c                 .    U R                   R                  $ rK   )rN   rI   rZ   s    r,   rI   SourceType.function_specifier   s    {{---r.   rL   N)rY   
__module____qualname____firstlineno____members__rR   r[   propertyrC   rD   rE   rF   rG   rH   rI   __static_attributes__ r.   r,   rA   rA   s   s    FK     D D     * * 6 6 ' ' . .r.   rA   c                       \ rS rSr/ SQrS rS r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)rg      )	const_intconst_doubleconst_stringconst_booleanidentrC   rD   c                     Xl         X l        g rK   rM   _symbol)rO   rP   ri   s      r,   rR   SourceSymbol.__init__   s    r.   c           	          U R                   nU(       a  U R                  nU(       a
  USU< S3-  nSU R                  R                  < S[	        U R
                  5      < SU R                  < SU< S3	$ )Nz:''rU   rV   z	' ident='z' src='rW   )source_filenamelinerX   rY   r-   rC   r|   )rO   srcr   s      r,   r[   SourceSymbol.__repr__   sW    ""99D$))NN##TYY'JJ	 	r.   c                 .    U R                   R                  $ rK   )r   rx   rZ   s    r,   rx   SourceSymbol.const_int   s    ||%%%r.   c                 .    U R                   R                  $ rK   )r   ry   rZ   s    r,   ry   SourceSymbol.const_double       ||(((r.   c                 .    U R                   R                  $ rK   )r   rz   rZ   s    r,   rz   SourceSymbol.const_string   r   r.   c                 .    U R                   R                  $ rK   )r   r{   rZ   s    r,   r{   SourceSymbol.const_boolean   s    ||)))r.   c                 .    U R                   R                  $ rK   )r   r|   rZ   s    r,   r|   SourceSymbol.ident   s    ||!!!r.   c                 .    U R                   R                  $ rK   )r   rC   rZ   s    r,   rC   SourceSymbol.type       ||   r.   c                     U R                   R                  b*  [        U R                  U R                   R                  5      $ g rK   )r   rD   rA   rM   rZ   s    r,   rD   SourceSymbol.base_type   s2    <<!!-dmmT\\-C-CDD .r.   c                 .    U R                   R                  $ rK   )r   r   rZ   s    r,   r   SourceSymbol.source_filename   s    ||+++r.   c                 .    U R                   R                  $ rK   )r   r   rZ   s    r,   r   SourceSymbol.line   r   r.   c                 .    U R                   R                  $ rK   )r   privaterZ   s    r,   r   SourceSymbol.private   s    ||###r.   c                 j    [        U R                  R                  U R                  R                  5      $ rK   )r   r   r   r   rZ   s    r,   positionSourceSymbol.position   s(    44))+ 	+r.   r~   N)rY   ro   rp   rq   rr   rR   r[   rs   rx   ry   rz   r{   r|   rC   rD   r   r   r   r   rt   ru   r.   r,   rg   rg      s    1K
 & & ) ) ) ) * * " " ! ! E E , , ! ! $ $ + +r.   rg   c                   \    \ rS rSrS r/ 4S jrS rS rS rS r	S r
S	 rS
 rS rS rSrg)r      c                 L    [        5       U l        / U l        / U l        S U l        g rK   )CSourceScannerrM   
_filenames_cpp_options	_compilerrZ   s    r,   rR   SourceScanner.__init__   s"    &(r.   c                 L   U R                   R                  U5        SU Vs/ s H"  n[        R                  R	                  U5      PM$     sn4SU4SU44 HG  u  pgU=(       d    /  H3  nXh-   n	XR                   ;  d  M  U R                   R                  U	5        M5     MI     g s  snf )Nz-Iz-Dz-U)r   extendospathrealpathappend)
rO   includesdefines	undefinescflagsfprefixargsargopts
             r,   set_cpp_optionsSourceScanner.set_cpp_options   s      ("($K(QRWW%5%5a%8($KL"G_"I.0LF 

l///%%,,S1 #0$Ks   )B!c                     Xl         g rK   )r   )rO   compilers     r,   set_compilerSourceScanner.set_compiler   s    !r.   c                    U HX  n[         R                  R                  U5      nU R                  R	                  U5        U R
                  R                  U5        MZ     / nU R
                   H[  n[         R                  R                  U5      S   [        ;   a  U R                  R                  U5        MJ  UR                  U5        M]     U R                  U5        g )Nr   )r   r   r   rM   append_filenamer   r   splitextSOURCE_EXTSlex_filename_parse)rO   	filenamesfilenameheaderss       r,   parse_filesSourceScanner.parse_files   s    !Hww''1HMM))(3OO""8,	 " Hww)!,;**84x(	 ( 	Gr.   c                    U R                   R                  S5        U R                   R                  U Vs/ s H"  n[        R                  R                  U5      PM$     sn5        U R                   R                  S5        g s  snf )NTF)rM   set_macro_scanparse_macrosr   r   r   )rO   r   r   s      r,   r   SourceScanner.parse_macros  s\    $$T*""#KABGG$4$4Q$7#KL$$U+ $Ls   )Bc              #   ~   #    U R                   R                  5        H  n[        U R                   U5      v   M     g 7frK   )rM   get_symbolsrg   rh   s     r,   r   SourceScanner.get_symbols  s-     mm//1Ft}}f55 2s   ;=c                 6    U R                   R                  5       $ rK   )rM   get_commentsrZ   s    r,   r   SourceScanner.get_comments  s    }}))++r.   c                 6    U R                   R                  5       $ rK   )rM   
get_errorsrZ   s    r,   r   SourceScanner.get_errors  s    }}''))r.   c                     [        S5        U R                  R                  5        H8  n[        UR                  UR                  R
                  UR                  5        M:     g )Nz------------------------------)printrM   r   r|   rD   rE   rC   rh   s     r,   dumpSourceScanner.dump  s@    hmm//1F&,, 0 0 5 5v{{C 2r.   c                    U(       d  g S/n/ n[        U R                  S9n[        R                  " SS[        R
                  " 5       S9u  pV[        R                  " US5       nU R                  XrX15        S S S 5        [        R                  R                  [        R                  R                  U5      S   5      nUS-   n	UR                  UU	U R                  5        [        S	5      (       d  [        R                  " U5        U R                  R!                  U	5        [        S	5      (       d  [        R                  " U	5        g g ! , (       d  f       N= f)
N__GI_SCANNER__)compiler_namez	g-ir-cpp-r	   )r   suffixdirwbr   z.iz
save-temps)r   r   tempfilemkstempr   getcwdfdopen_write_preprocess_srcr   basenamer   
preprocessr   r   unlinkrM   
parse_file)
rO   r   r   undefscc
tmp_fd_cpptmp_name_cppfp_cpptmpfile_basenametmpfile_outputs
             r,   r   SourceScanner._parse#  s   #$T^^4#+#3#3;;?8:		$E 
 YYz4(F&&vJ ) 77++BGG,<,<\,J1,MN *D0
l$''	) |,,IIl#  0|,,IIn% -! )(s   #E
Ec                    U Hj  nUR                  SU< S3R                  5       5        UR                  SU< S3R                  5       5        UR                  SR                  5       5        Ml     U H'  nUR                  SU< S3R                  5       5        M)     U H'  nUR                  SU< S3R                  5       5        M)     g )Nz#ifndef 
z	# define z#endif
z#undef z
#include <z>
)writeencode)rO   fpr   r   r   defineundefr   s           r,   r   #SourceScanner._write_preprocess_srcB  s    FHH199;<HH2::<=HHZ&&()  EHHu/779: !HHH86>>@A "r.   )r   r   r   rM   N)rY   ro   rp   rq   rR   r   r   r   r   r   r   r   r   r   r   rt   ru   r.   r,   r   r      sB     DF 2" ,6,*D&>	Br.   r   )Ar   r   messager   	ccompilerr   utilsr   r   dlldirsadd_dll_dirsgiscanner._giscannerr   r   cleanup_dll_dirsHEADER_EXTSr   ALL_EXTSranger   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   STORAGE_CLASS_NONESTORAGE_CLASS_TYPEDEFSTORAGE_CLASS_EXTERNSTORAGE_CLASS_STATICSTORAGE_CLASS_AUTOSTORAGE_CLASS_REGISTERSTORAGE_CLASS_THREAD_LOCALTYPE_QUALIFIER_NONETYPE_QUALIFIER_CONSTTYPE_QUALIFIER_RESTRICTTYPE_QUALIFIER_VOLATILETYPE_QUALIFIER_EXTENSIONFUNCTION_NONEFUNCTION_INLINEUNARY_ADDRESS_OFUNARY_POINTER_INDIRECTION
UNARY_PLUSUNARY_MINUSUNARY_BITWISE_COMPLEMENTUNARY_LOGICAL_NEGATIONr-   r?   r   rA   rg   ru   r.   r,   <module>r     sT  * 
     , *   i[ ! @    $+$ b	
 9	      #       !  !88/,. ,.^@+6 @+FfBF fBr.   