ó
    sñ:iö®  ã                   óî  • S SK Jr  S SKJrJr  S SKJrJr   S SK Jr	  SSKrSSKrSSKr \R                  S:  a  SSKrOSSKr\R"                  " 5       rS rS	r\R*                  " S
\R,                  \R.                  -  5      r\R*                  " S\R,                  \R.                  -  5      r\R*                  " S\R.                  5      r\R*                  " S5      r\R*                  " S5      r\R*                  " S5      r\R*                  " S5      rSq\R*                  " S\R@                  5      r!\R*                  " S5      r"\R*                  " S5      r#\R*                  " S5      r$\R*                  " S5      r%\R*                  " S5      r&\R*                  " S5      r'\R*                  " S5      r(S r)S r*S r+S r,S r-S r.S r/S  r0S! r1 " S" S#\25      r3g! \
 a    SSK	r	 GNÆf = f! \
 a    Sr GNžf = f)$é   )Úmodel)ÚCOMMON_TYPESÚresolve_common_type)ÚFFIErrorÚ	CDefError)Ú
_pycparseré    N)é   c                  ó   • SS K n SS Kn g ©Nr	   )Úpycparser.yacctabÚpycparser.lextab)Ú	pycparsers    ÚO/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/cffi/cparser.pyÚ%_workaround_for_static_import_findersr      s
   € ó Üó    z<cdef source string>z/\*.*?\*/|//([^\n\\]|\\.)*?$z?^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$z^[ \t]*#[ \t]*(?:line|\d+)\b.*$z=\s*\.\.\.\s*[,}]|\.\.\.\s*\}z__dotdotdot\d+__$z\[\s*\.\.\.\s*\]z\w+|\Sz-?0?x?[0-9a-f]+[lu]*$z\b(__stdcall|WINAPI)\bz[(]\s*(__stdcall|WINAPI)\bz\b__cdecl\bz9\bextern\s*"(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.z'[*]\s*((const|volatile|restrict)\b\s*)+z3(\b(int|long|short|signed|unsigned|char)\s*)+\.\.\.z\b(double|float)\s*\.\.\.c                  óF   • [         c  [        R                  " 5       q [         $ ©N)Ú_parser_cacher   ÚCParser© r   r   Ú_get_parserr   2   s   € äÑÜ!×)Ò)Ó+ˆÜÐr   c                 óx  • / n [         R                  U 5      nU(       d  OùUR                  U S UR                  5        5        UR                  S5        SnUR                  UR	                  5       5        UR                  5       nU R                  SU5      (       a  UR                  S5        US-  nSnUnU[        U 5      :  aF  X   nUS:X  a  US-  nO US:X  a  US:X  a  O)US-  nOUS;   a  US:X  a  OUS-  nU[        U 5      :  a  MF  XU U-   XS  -   n GM  UR                  U 5        SR                  U5      $ )NÚ(Ú)Ú*r	   r   z,;=Ú )	Ú_r_star_const_spaceÚsearchÚappendÚstartÚgroupÚendÚ
startswithÚlenÚjoin)ÚcsourceÚpartsÚmatchÚclosingÚendposÚlevelÚiÚcs           r   Ú_workaround_for_old_pycparserr/   8   s9  € ð €EØ
Ü#×*Ñ*¨7Ó3ˆÞØà�‰�W˜^˜eŸk™k›mÐ,Ô-Ø�‰�SÔ S˜7Ø�‰�U—[‘[“]Ô#Ø—‘“ˆØ×Ñ˜c 6×*Ñ*Ø�L‰L˜Ô˜w¨#™~˜wØˆØˆØ”#�g“,ÓØ‘
ˆAØ�C‹xØ˜‘
‘Ø�c“Ø˜A“:ØØ˜‘
‘Ø�e“Ø˜A“:ØØ�‰FˆAð ”#�g“,Õð  Ð# gÑ-°¸°Ñ;ˆò3 ð6 
‡L�L�ÔØ�7‰7�5‹>Ðr   c                 óæ  • / n [         R                  U 5      nU(       d  GO/UR                  5       S-
  nUR                  U S UR	                  5        5        SUR                  S5      ;   a  UR                  S5        OUR                  S5        X   S:X  af  U R                  SU5      nUS:  a  [        S5      eU R                  SUS-   U5      S:¼  a  [        S	5      eUR                  XS-   U 5        XS-   S  n O@U R                  S
U5      nUS:  a  [        S5      eUR                  XUS-    5        XS-   S  n UR                  S5        GMM  UR                  U 5        SR                  U5      $ )Nr   ÚCz(void __cffi_extern_python_plus_c_start; z!void __cffi_extern_python_start; Ú{Ú}r	   z!'extern "Python" {': no '}' foundz7cannot use { } inside a block 'extern "Python" { ... }'Ú;z'extern "Python": no ';' foundz  void __cffi_extern_python_stop;r   )
Ú_r_extern_pythonr   r#   r    r!   r"   Úfindr   ÚNotImplementedErrorr&   )r'   r(   r)   r+   r*   Ú	semicolons         r   Ú_preprocess_extern_pythonr9   b   sk  € ð €EØ
Ü ×'Ñ'¨Ó0ˆÞÙØ—‘“˜q‘ˆð 	�‰�W˜^˜eŸk™k›mÐ,Ô-Ø�%—+‘+˜a“.Ó Ø�L‰LÐCÕDà�L‰LÐ<Ô=Ø‰?˜cÓ!à—l‘l 3¨Ó/ˆGØ˜‹{ÜÐ EÓFÐFØ�|‰|˜C ¨!¡¨WÓ5¸Ó:Ü)ð +Hó Ið Ià�L‰L˜¨¡¨'Ð2Ô3Ø a™i˜jÐ)‰Gð  Ÿ™ S¨&Ó1ˆIØ˜1‹}ÜÐ BÓCÐCØ�L‰L˜¨	°!©Ð4Ô5Ø¨™k˜lÐ+ˆGØ�‰Ð7Ô8ò= ðB 
‡L�L�ÔØ�7‰7�5‹>Ðr   c                 óÆ   • SU ;  a  g U R                  5        HF  nSU;   d  M  UR                  5       R                  S5      (       a  M1  SS KnUR	                  S5          g    g )NÚ"Ú#r	   z¨String literal found in cdef() or type source. String literals are ignored here, but you should remove them anyway because some character sequences confuse pre-parsing.)Ú
splitlinesÚlstripr$   ÚwarningsÚwarn)r'   Úliner?   s      r   Ú_warn_for_string_literalrB   ”   sV   € Ø
�'ÓØØ×"Ñ"Ö$ˆØ�$�;˜tŸ{™{›}×7Ñ7¸×<Ó<ÛØ�M‰Mð 1ô 2ñ ò %r   c                 óp   • U R                   (       d%  SS KnUR                  SU R                  < S35        g g )Nr	   zGlobal variable 'z_' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern'))Ústorager?   r@   Úname)Údeclr?   s     r   Ú/_warn_for_non_extern_non_static_global_variablerG       s)   € Ø�<�<ÛØ�Šà.2¯i¬ið:õ 	;ð r   c                 óF   ^• / mU4S jn[         R                  X5      n U T4$ )Nc                 ób   >• [        T5      nTR                  U R                  5       5        SU-  $ )Nz#line@%d)r%   r    r"   )Úmr-   Úline_directivess     €r   ÚreplaceÚ(_remove_line_directives.<locals>.replace­   s+   ø€ Ü�Ó ˆØ×Ñ˜qŸw™w›yÔ)Ø˜A‰~Ðr   ©Ú_r_line_directiveÚsub)r'   rL   rK   s     @r   Ú_remove_line_directivesrQ   §   s,   ø€ ð
 €Oõô  ×#Ñ# GÓ5€GØ�OÐ#Ð#r   c                 ó:   ^• U4S jn[         R                  X 5      $ )Nc                 óˆ   >• U R                  5       nUR                  S5      (       d  [        S5      eT[        USS  5         $ )Nz#line@zBunexpected #line directive (should have been processed and removedé   )r"   r$   ÚAssertionErrorÚint)rJ   ÚsrK   s     €r   rL   Ú*_put_back_line_directives.<locals>.replaceµ   sG   ø€ Ø�G‰G‹IˆØ�|‰|˜H×%Ñ%Ü ð "Kó Lð Làœs 1 Q R 5›zÑ*Ð*r   rN   )r'   rK   rL   s    ` r   Ú_put_back_line_directivesrY   ´   s   ø€ õ+ô × Ñ  Ó2Ð2r   c                 ó$  • [        U 5      u  pS n[        R                  X 5      n 0 n[        R	                  U 5       H9  nUR                  5       u  pVUR                  SS5      R                  5       nXcU'   M;     [        R                  SU 5      n [        R                  S:  a  [        U 5      n [        R                  SU 5      n [        R                  SU 5      n [        R                  SU 5      n [        U 5      n [        U 5        [         R                  SU 5      n [#        [$        R	                  U 5      5      n['        [)        U5      5       Hs  u  p„UR+                  5       n	X	   S	:X  a9  U R-                  S
X”R/                  5       5      n
X©:”  d   eSU S U	 UX
S-   S  4-  n MV  X	U	S-    S
:X  d   eSU S U	 UX	S-   S  4-  n Mu     [0        R                  SU 5      n [2        R                  SU 5      n U R                  S
S5      n [5        X5      n X4$ )Nc                 óL   • SU R                  5       R                  S5      S-  -   $ )NÚ Ú
)r"   Úcount)rJ   s    r   Úreplace_keeping_newlinesÚ-_preprocess.<locals>.replace_keeping_newlinesÃ   s!   € Ø�Q—W‘W“Y—_‘_ TÓ*¨TÑ1Ñ1Ð1r   z\
r   z2.14z volatile volatile const(z volatile volatile const r\   z[__dotdotdotarray__]Ú=ú...z%s,__dotdotdot%d__ %sr
   z%s __dotdotdot%d__ %sz __dotdotdotint__ z __dotdotdotfloat__ z __dotdotdot__ )rQ   Ú
_r_commentrP   Ú	_r_defineÚfinditerÚgroupsrL   Ústripr   Ú__version__r/   Ú_r_stdcall2Ú_r_stdcall1Ú_r_cdeclr9   rB   Ú_r_partial_arrayÚlistÚ_r_partial_enumÚ	enumerateÚreversedr!   r6   r#   Ú_r_int_dotdotdotÚ_r_float_dotdotdotrY   )r'   rK   r_   Úmacrosr)   Ú	macronameÚ
macrovalueÚmatchesÚnumberÚpÚp2s              r   Ú_preprocessrz   ½   s  € ô  7°wÓ?Ñ€Gò2ä�n‰nÐ5Ó?€Gà€FÜ×#Ñ# GÖ,ˆØ %§¡£Ñˆ	Ø×'Ñ'¨°Ó3×9Ñ9Ó;ˆ
Ø&ˆyÓñ -ô �m‰m˜B Ó(€Gä×Ñ˜vÓ%Ü/°Ó8ˆô �o‰oÐ9¸7ÓC€GÜ�o‰oÐ9¸7ÓC€GÜ�l‰l˜3 Ó(€Gô (¨Ó0€Gô ˜WÔ%ô ×"Ñ"Ð#9¸7ÓC€Gô ”?×+Ñ+¨GÓ4Ó5€GÜ"¤8¨GÓ#4Ö5‰ˆØ�K‰K‹MˆØ‰:˜ÓØ—‘˜e Q¯	©	«Ó4ˆBØ“6ˆM�6Ø-°¸¸!°¸fØ18¸A¹¸°ð1Añ AŠGð ˜Q˜q™S�> UÓ*Ð*Ð*Ø-°¸¸!°¸fØ18¸1¹¸°ð1@ñ @ŠGñ 6ô ×"Ñ"Ð#7¸ÓA€Gä ×$Ñ$Ð%;¸WÓE€Gð �o‰o˜eÐ%6Ó7€Gä'¨ÓA€GØˆ?Ðr   c                 ól  • [        [        5      nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        [        5       nSnSnSn[        R	                  U 5       H¦  nXa;   aœ  US:X  a,  U(       a$  UR                  U5        UR                  U5        SnOjUS:X  a  S	nSnO_US:X  a  US
-  nOSUS:X  a  US
-  nOGUS:X  a0  U(       a(  US:X  a"  UR                  U5        UR                  U5        OUR                  U5        UnM¨     U$ )Nr4   Ú,r   r   ÚtypedefFr	   r   Tr   )Úsetr   ÚaddÚ_r_wordsÚfindallÚdiscard)r'   Úlook_for_wordsÚ
words_usedÚ
is_typedefÚparenÚprevious_wordÚwords          r   Ú_common_type_namesr‰   ÿ   s)  € ô œÓ&€NØ×Ñ�sÔØ×Ñ�sÔØ×Ñ�sÔØ×Ñ�sÔØ×Ñ�yÔ!Ü“€JØ€JØ€EØ€MÜ× Ñ  Ö)ˆØÓ!Ø�s‹{ÞØ×&Ñ& }Ô5Ø"×*Ñ*¨=Ô9Ø!&�JøØ˜Ó"Ø!�
Ø‘Ø˜“Ø˜‘
‘Ø˜“Ø˜‘
‘Ø˜“Þ %¨1£*Ø×&Ñ& }Ô5Ø"×*Ñ*¨=Ô9øà—‘˜tÔ$ØŠñ) *ð* Ðr   c                   óÚ   • \ rS rSrS rS rS rS r  SS jrS r	S	 r
S
 rS rS rS rS rS rS S jrS rS!S jr  S"S jrS!S jrS rS#S jrS rS$S jrS rS rS rS rS rSrg)%ÚParseri'  c                 óª   • 0 U l         [        5       U l        SU l        [        R
                  " 5       U l        0 U l        0 U l        / U l	        S U l
        g r   )Ú_declarationsr~   Ú_included_declarationsÚ_anonymous_counterÚweakrefÚWeakKeyDictionaryÚ_structnode2typeÚ_optionsÚ_int_constantsÚ_recompleteÚ_uses_new_feature)Úselfs    r   Ú__init__ÚParser.__init__)  sL   € ØˆÔÜ&)£eˆÔ#Ø"#ˆÔÜ '× 9Ò 9Ó ;ˆÔØˆŒØ ˆÔØˆÔØ!%ˆÕr   c                 ó†  • [        U5      u  p[        U5      n/ n[        U R                  5       HB  nUR	                  S5      (       d  M  USS  nUR                  U5        UR                  U5        MD     U[        U5      -  n/ nUR                  S5        U H  nUR                  SU-  5        M     UR                  S5        UR                  S[        < S35        UR                  U5        UR                  S5        S	R                  U5      n[        b  [        R                  5          [        5       R                  U5      n	[        b  [        R#                  5         W	X!4$ ! [        R                  R                   a  n
U R!                  X¡5         S n
A
NSS n
A
ff = f! [        b  [        R#                  5         f f = f)
Nútypedef é   z*# 1 "<cdef automatic initialization code>"ztypedef int %s;z@typedef int __dotdotdotint__, __dotdotdotfloat__, __dotdotdot__;z# 1 "r;   r   r]   )rz   r‰   Úsortedr�   r$   r    r‚   ÚCDEF_SOURCE_STRINGr&   ÚlockÚacquirer   Úparser   Úc_parserÚ
ParseErrorÚconvert_pycparser_errorÚrelease)r—   r'   rs   ÚctnÚ	typenamesrE   ÚcsourcelinesÚtypenameÚfullcsourceÚastÚes              r   Ú_parseÚParser._parse3  sƒ  € Ü% gÓ.‰ˆô
 ! Ó)ˆØˆ	Ü˜4×-Ñ-Ö.ˆDØ�‰˜z×*Ó*Ø˜A˜B�x�Ø× Ñ  Ô&Ø—‘˜DÖ!ñ	 /ð
 	”V˜C“[Ñ ˆ	àˆØ×ÑÐHÔIÛ!ˆHØ×ÑÐ 1°HÑ <Ö=ñ "à×Ñð .ô 	/ð 	×Ò×*<Ð>Ô?Ø×Ñ˜GÔ$Ø×Ñ˜BÔØ—i‘i Ó-ˆÜÑÜ�L‰LŒNð	Ü“-×%Ñ% kÓ2ˆCô ÑÜ—‘”à�FÐ#Ð#øô ×!Ñ!×,Ñ,ó 	5Ø×(Ñ(¨×4Ñ4ûð	5ûô ÑÜ—‘•ð  ús*   Ä.E& Å&FÆFÆF" ÆFÆF" Æ"G c                 ó  • S n[        U5      n[        R                  " [        < S3U5      nU(       aL  [	        UR                  S5      S5      nUR                  5       nSUs=::  a  [        U5      ::  a  O  U$ XvS-
     nU$ )Nz:(\d+):r   é
   )ÚstrÚrer)   rž   rV   r"   r=   r%   )r—   r¬   r'   rA   Úmsgr)   Úlinenumr¨   s           r   Ú_convert_pycparser_errorÚParser._convert_pycparser_errorZ  su   € ð ˆÜ�!‹fˆÜ—’×);Ð=¸sÓCˆÞÜ˜%Ÿ+™+ a›.¨"Ó-ˆGØ"×-Ñ-Ó/ˆLØ�GÕ0œs <Ó0Õ0àˆð $¨A¡IÑ.�Øˆr   c                 óœ   • U R                  X5      n[        U5      nU(       a  SUR                  5       < SU< 3nOSU< 3n[        U5      e)Nzcannot parse "z"
zparse error
)rµ   r±   rg   r   )r—   r¬   r'   rA   r³   s        r   r¤   ÚParser.convert_pycparser_errorh  sG   € Ø×,Ñ,¨QÓ8ˆä�!‹fˆßØ-1¯Z©Z®\º3Ð?‰Cð ò (+Ð,ˆCÜ˜‹nÐr   Nc                 ó  • U(       a&  US:w  a  [        S5      eU(       a  [        S5      eSnO%U(       a  XDS-
  -  (       a  [        SU< 35      eOSnU R                  n UUUS.U l        U R                  U5        X`l        g ! X`l        f = f)NTzB'packed' should be False or True; use 'pack' to give another valuez$cannot give both 'pack' and 'packed'r   z#'pack' must be a power of two, not r	   )ÚoverrideÚpackedÚ	dllexport)Ú
ValueErrorr“   Ú_internal_parse)r—   r'   rº   r»   Úpackr¼   Úprev_optionss          r   r¡   ÚParser.parser  sž   € æØ˜‹~Ü ð "@ó Að AæÜ Ð!GÓHÐHØ‰DÞØ˜a‘x× Ý Úð"ó ð ð !ð ˆDØ—}‘}ˆð	)Ø)1Ø'+Ø*3ñ5ˆDŒMð × Ñ  Ô)à(�Mø˜L�Mús   Á B ÂBc           	      ób  • U R                  U5      u  p#nU R                  U5        [        UR                  5      nU H  nUR                  S:X  d  M    O    eS n SU l        U GHÅ  nUn[        U[        R                  R                  5      (       a  U R                  U5        MB  [        U[        R                  R                  5      (       Ga  UR                  (       d  [        SU5      eSn[        UR                  R                  [        R                  R                  5      (       aJ  UR                  R                  R                  S   R!                  S5      (       a  U R#                  U5      nGOA[        UR                  [        R                  R$                  5      (       a×  [        UR                  R                  [        R                  R&                  5      (       aš  [        UR                  R                  R                  [        R                  R                  5      (       aS  UR                  R                  R                  R                  S   R!                  S5      (       a  U R)                  U5      nO7U R+                  UR                  UR                  SSUR                  < S	3S
9u  p‡U R-                  SUR                  -   X‡S9  GMs  UR.                  R0                  S:X  a  SS Kn	U	R5                  S5        GM¥  [        SUR.                  R0                  -  U5      e   g ! [         a4  n
[7        U
R8                  5      S:X  a  U
R8                  U4-   U
l        e S n
A
f[:         a9  n
U R=                  X¡5      nU(       a  U
R8                  S   SU-  -   4U
l        e S n
A
ff = f)NÚ__dotdotdot__r	   Ú__cffi_extern_python_stopz!typedef does not declare any nameéÿÿÿÿÚ__dotdotdotTz*(z *)0)rE   Úpartial_length_okÚtypedef_exampler›   ©ÚqualsÚPragmaa  #pragma in cdef() are entirely ignored. They should be removed for now, otherwise your code might behave differently in a future version of CFFI if #pragma support gets added. Note that '#pragma pack' needs to be replaced with the 'packed' keyword argument to cdef().zBunexpected <%s>: this construct is valid C but not valid in cdef()r   z
    *** Err: %s)r­   Ú_process_macrosÚiterÚextrE   Ú_inside_extern_pythonÚ
isinstancer   Úc_astÚDeclÚ_parse_declÚTypedefr   ÚtypeÚIdentifierTypeÚnamesr$   Ú_get_unknown_typeÚPtrDeclÚTypeDeclÚ_get_unknown_ptr_typeÚ_get_type_and_qualsÚ_declareÚ	__class__Ú__name__r?   r@   r%   Úargsr   rµ   )r—   r'   r«   rs   ÚiteratorrF   Úcurrent_declrÊ   Úrealtyper?   r¬   r³   s               r   r¾   ÚParser._internal_parseŠ  sÖ  € Ø#Ÿ{™{¨7Ó3Ñˆ�Wà×Ñ˜VÔ$ô ˜Ÿ™“=ˆÛˆDØ�y‰y˜OÕ+Ùñ ð �1Øˆð/	Ø)DˆDÔ&Ü �Ø#�Ü˜d¤I§O¡O×$8Ñ$8×9Ñ9Ø×$Ñ$ TÖ*Ü ¤i§o¡o×&=Ñ&=×>Ò>ØŸ9Ÿ9Ü'Ð(KØ(,ó.ð .à�EÜ" 4§9¡9§>¡>´9·?±?×3QÑ3Q×RÑRØ ŸI™IŸN™N×0Ñ0°Ñ4×?Ñ?À×NÑNØ#'×#9Ñ#9¸$Ó#?šÜ$ T§Y¡Y´	·±×0GÑ0G×HÑHÜ$ T§Y¡Y§^¡^´Y·_±_×5MÑ5M×NÑNÜ$ T§Y¡Y§^¡^×%8Ñ%8Ü%.§_¡_×%CÑ%C÷Eñ EàŸ)™)Ÿ.™.×-Ñ-×3Ñ3°BÑ7×BÑBÀ=×QÑQØ#'×#=Ñ#=¸dÓ#C™à*.×*BÑ*BØ ŸI™I¨D¯I©IÉØ:>¿)¼)Ð,Eð +Cð +G™˜ð —M‘M *¨t¯y©yÑ"8¸(�MÔPØ—^‘^×,Ñ,°Ó8ã#Ø—M‘Mð?÷@ô $ð %@à$(§N¡N×$;Ñ$;ñ%<à=AóCð CòE !øôJ ó 	Ü�1—6‘6‹{˜aÓØŸ™ < /Ñ1�”ØûÜó 	Ø×/Ñ/°Ó;ˆCÞØŸ&™& ™)Ð&9¸CÑ&?Ñ?ÐA�”Øûð		ús%   ÁKL/ Ì/
N.Ì9/M(Í(N.Í54N)Î)N.c                 ó„   • XR                   ;   a#  U R                   U   U:X  a  g [        SU< 35      eX R                   U'   g )Nz#multiple declarations of constant: )r”   r   )r—   ÚkeyÚvals      r   Ú_add_constantsÚParser._add_constantsÉ  sG   € Ø×%Ñ%Ó%Ø×"Ñ" 3Ñ'¨3Ó.ØÝÚ;>Ð@óBð Bà#&×Ñ˜CÒ r   c                 óh  • UR                  5       R                  S5      nUR                  S5      nU(       a  USS  nUR                  S5      (       a$  US:w  a  UR                  S5      (       d  SUSS  -   n[        US5      nU(       a  U* nU R	                  X5        U R                  SU-   U5        g )	NÚulÚ-r   Ú0Ú0xÚ0or	   úmacro )ÚlowerÚrstripr$   rV   rè   rÝ   )r—   rE   Úint_strÚnegÚpyvalues        r   Ú_add_integer_constantÚParser._add_integer_constantÑ  s£   € Ø—-‘-“/×(Ñ(¨Ó.ˆØ× Ñ  Ó%ˆÞØ˜a˜b�kˆGà×Ñ˜s×#Ñ#¨°3«Ø×*Ñ*¨4×0Ñ0Ø˜W Q R˜[Ñ(ˆGÜ�g˜q“/ˆÞØ�hˆGØ×Ñ˜DÔ*Ø�‰�h ‘o wÕ/r   c                 ó  • UR                  5        Hx  u  p#UR                  5       n[        R                  U5      (       a  U R	                  X#5        MB  US:X  a  U R                  SU-   U5        M_  [        SU< SU< SU< SU< 35      e   g )Nrb   rð   z5only supports one of the following syntax:
  #define z+ ...     (literally dot-dot-dot)
  #define zM NUMBER  (with NUMBER an integer constant, decimal/hex/octal)
got:
  #define r\   )Úitemsrg   Ú_r_int_literalr)   rö   rÝ   r   )r—   rs   ræ   Úvalues       r   rÌ   ÚParser._process_macrosà  st   € Ø Ÿ,™,ž.‰JˆCØ—K‘K“MˆEÜ×#Ñ# E×*Ñ*Ø×*Ñ*¨3Ö6Ø˜%“Ø—‘˜h¨™n¨eÖ4åó ›C£¢eð-ó.ð .ò )r   c                 óø   • U R                  X5      nU R                  R                  S5      (       a  SnO(U R                  S:X  a  SnOU R                  S:X  a  SnOSnU R	                  XCR
                  -   U5        g )Nr¼   zdllexport_python Ú__cffi_extern_python_startzextern_python Ú!__cffi_extern_python_plus_c_startzextern_python_plus_c z	function )Ú_get_type_pointerr“   ÚgetrÏ   rÝ   rE   )r—   ÚtprÊ   rF   Útags        r   Ú_declare_functionÚParser._declare_functionñ  sm   € Ø×#Ñ# BÓ.ˆØ�=‰=×Ñ˜[×)Ñ)Ø%‰CØ×'Ñ'Ð+GÓGØ"‰CØ×'Ñ'Ð+NÓNØ)‰CàˆCØ�‰�cŸI™I‘o rÕ*r   c                 ó  • UR                   n[        U[        R                  R                  5      (       aO  U R                  X!R                  S9u  p4[        U[        R                  5      (       d   eU R                  X4U5        g [        U[        R                  R                  5      (       a  U R                  SU5        O•[        U[        R                  R                  5      (       a  U R                  SU5        OY[        U[        R                  R                  5      (       a  U R                  SU5        OUR                  (       d  [        SU5      eUR                  (       Ga£  U R                  USS9u  p4UR                  (       a  U R                  X4U5        g UR!                  5       (       a‹  [#        US5      (       az  [#        UR$                  S	5      (       a_  [&        R)                  UR$                  R*                  5      (       a1  U R-                  UR                  UR$                  R*                  5        g UR!                  5       (       aè  [        UR$                  [        R                  R.                  5      (       aµ  UR$                  R0                  S
:X  a›  [#        UR$                  R2                  S	5      (       av  [&        R)                  UR$                  R2                  R*                  5      (       a>  U R-                  UR                  S
UR$                  R2                  R*                  -   5        g U[        R4                  L a2  UR                  R7                  S5      (       a  UR                  U l        g U R8                  S:w  a  [        S5      eU[        R:                  -  (       a/  UR<                  (       d  U R?                  SUR                  -   X4S9  g [A        U5        U R?                  SUR                  -   X4S9  g g )N)rE   ÚstructÚunionÚenumz'construct does not declare any variableT©rÇ   Úinitrû   rì   Ú__cffi_extern_python_rÄ   z<cannot declare constants or variables with 'extern "Python"'z	constant rÉ   z	variable )!rÕ   rÐ   r   rÑ   ÚFuncDeclrÜ   rE   r   ÚRawFunctionTyper  ÚStructÚ_get_struct_union_enum_typeÚUnionÚEnumr   Úis_raw_functionÚis_integer_typeÚhasattrr  rú   r)   rû   rö   ÚUnaryOpÚopÚexprÚ	void_typer$   rÏ   ÚQ_CONSTÚis_array_typerÝ   rG   )r—   rF   Únoder  rÊ   s        r   rÓ   ÚParser._parse_declý  sÙ  € Ø�y‰yˆÜ�dœIŸO™O×4Ñ4×5Ñ5Ø×0Ñ0°¿I¹IÐ0ÐF‰IˆBÜ˜b¤%×"7Ñ"7×8Ñ8Ð8Ð8Ø×"Ñ" 2¨dÕ3ä˜$¤	§¡× 6Ñ 6×7Ñ7Ø×0Ñ0°¸4Õ@Ü˜D¤)§/¡/×"7Ñ"7×8Ñ8Ø×0Ñ0°¸$Õ?Ü˜D¤)§/¡/×"6Ñ"6×7Ñ7Ø×0Ñ0°¸Õ>Ø—Y—YÜÐ IØ $ó&ð &ð �y�yˆyØ ×4Ñ4°TØGKð 5ð M‘	�à×%×%Ø×*Ñ*¨2°dÕ;Ø×(Ñ(×*Ñ*Ü  f×-Ñ-Ü §	¡	¨7×3Ñ3Ü&×,Ñ,¨T¯Y©Y¯_©_×=Ñ=Ø×.Ñ.¨t¯y©y¸$¿)¹)¿/¹/ÕJØ×(Ñ(×*Ñ*Ü" 4§9¡9¬i¯o©o×.EÑ.E×FÑFØŸ	™	Ÿ™¨Ó+Ü §	¡	§¡°×8Ñ8Ü&×,Ñ,¨T¯Y©Y¯^©^×-AÑ-A×BÑBØ×.Ñ.¨t¯y©yØ/2°T·Y±Y·^±^×5IÑ5IÑ/IõKàœEŸO™OÒ+Ø—i‘i×*Ñ*Ð+B×CÑCð 26·±�DÕ.à×1Ñ1Ð4OÓOÜ'ðAóBð Bð ¤§¡×-°r×7G×7GØŸ™ k°D·I±IÑ&=¸r˜ÒOäGÈÔMØŸ™ k°D·I±IÑ&=¸r˜ÒOðA r   c                 ó*   • U R                  U5      S   $ r   )Úparse_type_and_quals)r—   Úcdecls     r   Ú
parse_typeÚParser.parse_type0  s   € Ø×(Ñ(¨Ó/°Ñ2Ð2r   c                 ób  • U R                  SU-  5      S S u  p#U(       a   eUR                  S   R                  R                  R                  S   n[        U[        R                  R                  5      (       a  [        SUR                  < S35      eU R                  UR                  5      $ )Nzvoid __dummy(
%s
);é   rÅ   r	   zunknown identifier 'Ú')r­   rÎ   rÕ   rà   ÚparamsrÐ   r   rÑ   ÚIDr   rE   rÜ   )r—   r   r«   rs   Úexprnodes        r   r  ÚParser.parse_type_and_quals3  s‰   € Ø—k‘kÐ"9¸EÑ"AÓBÀ2ÀAÐF‰ˆÞÐˆzØ—7‘7˜2‘;×#Ñ#×(Ñ(×/Ñ/°Ñ2ˆÜ�h¤	§¡× 2Ñ 2×3Ñ3Ý¸¿¼ÐHÓIÐIØ×'Ñ'¨¯©Ó6Ð6r   c                 óJ  • XR                   ;   aK  U R                   U   u  pVXRL a  Xd:X  a  g U R                  R                  S5      (       d  [        SU< S35      eSUR	                  5       ;  d   eX$4U R                   U'   U(       a  U R
                  R                  U5        g g )Nrº   zmultiple declarations of z5 (for interactive usage, try cdef(xx, override=True))rÃ   )r�   r“   r  r   ÚsplitrŽ   r   )r—   rE   ÚobjÚincludedrÊ   ÚprevobjÚ	prevqualss          r   rÝ   ÚParser._declare;  sœ   € Ø×%Ñ%Ó%Ø!%×!3Ñ!3°DÑ!9ÑˆGØŠ~ )Ó"4ØØ—=‘=×$Ñ$ Z×0Ñ0Ýã6:ð=ó>ð >ð  d§j¡j£lÓ2Ð2Ð2Ø$' <ˆ×Ñ˜4Ñ ÞØ×'Ñ'×+Ñ+¨CÕ0ð r   c                 ób  • Sn[        U[        R                  R                  [        R                  R                  45      (       ai  SUR
                  ;   a  U[        R                  -  nSUR
                  ;   a  U[        R                  -  nSUR
                  ;   a  U[        R                  -  nU$ )Nr	   ÚconstÚvolatileÚrestrict)
rÐ   r   rÑ   rÚ   rÙ   rÊ   r   r  Ú
Q_VOLATILEÚ
Q_RESTRICT©r—   rÕ   rÊ   s      r   Ú_extract_qualsÚParser._extract_qualsI  s‹   € ØˆÜ�dœYŸ_™_×5Ñ5Ü&Ÿ_™_×4Ñ4ð6÷ 7ñ 7à˜$Ÿ*™*Ó$ØœŸ™Ñ&�Ø˜TŸZ™ZÓ'Øœ×)Ñ)Ñ)�Ø˜TŸZ™ZÓ'Øœ×)Ñ)Ñ)�Øˆr   c                 óœ  • [        U[        R                  5      (       a  UR                  5       $ [        U[        R                  5      (       ai  UR
                  R                  S5      (       aI  UR
                  SS  R                  5       (       a'  UR                  c  Ub  [        R                  " XU5      $ [        R                  " X5      $ )NÚ$r   )rÐ   r   r  Úas_function_pointerÚStructOrUnionOrEnumrE   r$   ÚisdigitÚ	forcenameÚNamedPointerTypeÚPointerType)r—   rÕ   rÊ   Údeclnames       r   r   ÚParser._get_type_pointerU  s—   € Ü�dœE×1Ñ1×2Ñ2Ø×+Ñ+Ó-Ð-Ü�tœU×6Ñ6×7Ñ7Ø—	‘	×$Ñ$ S×)Ñ)¨d¯i©i¸¸¨m×.CÑ.C×.EÑ.EØ—‘Ñ&¨8Ñ+?Ü×)Ò)¨$¸%Ó@Ð@Ü× Ò  Ó-Ð-r   c                 ó"
  • [        U[        R                  R                  5      (       aÁ  [        UR                  [        R                  R
                  5      (       aŽ  [        UR                  R                  5      S:X  ak  SUR                  R                  S   -   U R                  ;   aA  U R                  SUR                  R                  S   -      u  pVX`R                  U5      -  nXV4$ [        U[        R                  R                  5      (       at  UR                  c  S nOU R                  UR                  US9nUb  US:X  a  SU< S3nSU-   nU R                  UR                  UUS	9u  pV[        R                  " XW5      U4$ [        U[        R                  R                   5      (       aA  U R                  UR                  5      u  p‰U R#                  X‰US
9nU R                  U5      nXV4$ [        U[        R                  R                  5      (       Ga  U R                  U5      nUR                  n
[        U
[        R                  R
                  5      (       Ga  [%        U
R                  5      nUSS/:w  aš  0 nU(       a0  US   nUS;   a  UR'                  US5      S-   XÂ'   US	 OO	U(       a  M0  / nS H6  n[)        UR'                  US5      5       H  nUR+                  U5        M     M8     U(       d  S/nUS/:X  a  SU;   d  SU;   a  / nXÛ-   nSR-                  U5      nUS:X  a  [        R.                  U4$ US:X  a"  [1        SUR2                  R4                  -  5      e[7        U U5      u  nnUUU-  4$ [        U
[        R                  R8                  5      (       a  U R;                  SX¢5      nXV4$ [        U
[        R                  R<                  5      (       a  U R;                  SX¢5      nXV4$ [        U
[        R                  R>                  5      (       a  U R;                  SX¢5      nXV4$ [        U[        R                  R@                  5      (       a  U RC                  X5      S4$ [        U[        R                  R8                  5      (       a  U R;                  SXSS9S4$ [        U[        R                  R<                  5      (       a  U R;                  SXSS9S4$ [1        SUR2                  R4                  -  5      e)Nr   r›   r	   r
  rb   z_cffi_array_len(r   r   )rÇ   rÈ   )rB  ÚsignedÚchar)ÚshortÚlongrE  Úunsigned)rI  rG  rH  rV   rG  rH  r\   ÚvoidrÃ   z:%d: bad usage of "..."r  r  r	  T)Únestedz(:%d: bad or unsupported type declaration)"rÐ   r   rÑ   rÚ   rÕ   rÖ   r%   r×   r�   r8  Ú	ArrayDeclÚdimÚ_parse_constantrÜ   r   Ú	ArrayTyperÙ   r   rm   r  Úranger    r&   r  r   ÚcoordrA   r   r  r  r  r  r  Ú_parse_function_type)r—   ÚtypenoderE   rÇ   rÈ   r  rÊ   ÚlengthÚitemtypeÚ	itemqualsrÕ   r×   ÚprefixesÚnewnamesÚprefixr-   ÚidentÚtp0Úquals0s                      r   rÜ   ÚParser._get_type_and_quals^  s‘  € ô �x¤§¡×!9Ñ!9×:Ñ:Ü�x—}‘}¤i§o¡o×&DÑ&D×EÑEÜ�—‘×#Ñ#Ó$¨Ó)Ø˜(Ÿ-™-×-Ñ-¨aÑ0Ñ0°T×5GÑ5GÓGØ×*Ñ*¨:¸¿¹×8KÑ8KÈAÑ8NÑ+NÑO‰IˆBØ×(Ñ(¨Ó2Ñ2ˆEØ�9Ðä�h¤	§¡× 9Ñ 9×:Ñ:à�|‰|Ñ#Ø‘à×-Ñ-Ø—L‘LÐ4Eð .ð G�ð Ñ*Ø˜U”?Û6EÐG�FØ"%¨Ñ"7�à×0Ñ0°·±Ø2CØ0?ð 1ð A‰IˆBô —?’? 2Ó.°Ð5Ð5ä�h¤	§¡× 7Ñ 7×8Ñ8à"&×":Ñ":¸8¿=¹=Ó"IÑˆHØ×'Ñ'¨ÀdÐ'ÐKˆBØ×'Ñ'¨Ó1ˆEØ�9Ðä�h¤	§¡× 8Ñ 8×9Ò9Ø×'Ñ'¨Ó1ˆEØ—=‘=ˆDÜ˜$¤	§¡× >Ñ >×?Ò?ô ˜TŸZ™ZÓ(�Ø˜X vÐ.Ó.Ø!�HÞØ$ Q™x˜ØÐ#JÓJØ-5¯\©\¸$ÀÓ-BÀQÑ-F˜H™NØ % a¡à!÷  ˜%ð  "�HÛ"?˜Ü!& x§|¡|°F¸AÓ'>Ö!?˜AØ$ŸO™O¨FÖ3ó "@ñ #@ö !Ø!& ˜Ø  Ó'Ø" hÓ.°&¸HÓ2DØ$&˜EØ$Ñ,�EØŸ™ ›�Ø˜F“?Ü Ÿ?™?¨EÐ1Ð1Ø˜OÓ+Ü"Ð#<Ø$ŸN™N×/Ñ/ñ$0ó 1ð 1ä1°$¸Ó>‘��VØ˜U V™^Ð,Ð,ä˜$¤	§¡× 6Ñ 6×7Ñ7à×5Ñ5°hÀÓK�Ø�yÐ ä˜$¤	§¡× 5Ñ 5×6Ñ6à×5Ñ5°g¸tÓJ�Ø�yÐ ä˜$¤	§¡× 4Ñ 4×5Ñ5à×5Ñ5°f¸dÓI�Ø�yÐ ä�h¤	§¡× 8Ñ 8×9Ñ9à×,Ñ,¨XÓ<¸aÐ?Ð?ô �h¤	§¡× 6Ñ 6×7Ñ7Ø×3Ñ3°H¸hØ;?ð 4ð AØBCðDð Dä�h¤	§¡× 5Ñ 5×6Ñ6Ø×3Ñ3°G¸XØ;?ð 4ð AØBCðDð Dô ÐAØ—‘×#Ñ#ñ$ó %ð 	%r   c                 ó`  • [        [        UR                  S/ 5      5      n[        U5       H>  u  pE[	        US5      (       a  M  [        SU=(       d    SUS-   [        USS5      4-  5      e   [        U5      S:„  =(       a¡    [        US	   R                  [        R                  R                  5      =(       ai    [        US	   R                  R                  [        R                  R                  5      =(       a'    US	   R                  R                  R                  S
/:H  nU(       a.  UR                  5         U(       d  [        SU=(       d    S-  5      eU Vs/ s H+  nU R                  " U R!                  UR                  5      6 PM-     nnU(       d  U["        R$                  /:X  a  / nU R!                  UR                  5      u  pšS n[	        UR                  S5      (       a!  UR                  R&                  SS  / SQ:X  a  Sn["        R(                  " [+        U5      X–U5      $ s  snf )Nr&  rÕ   zt%s arg %d: unknown type '%s' (if you meant to use the old C syntax of giving untyped arguments, it is not supported)zin expressionr   rE   Ú?r	   rÅ   rÃ   z=%s: a function with only '(...)' as argument is not correct CrÊ   éýÿÿÿ)r3  r3  r2  Ú	__stdcall)rm   Úgetattrrà   ro   r  r   r%   rÐ   rÕ   r   rÑ   rÚ   rÖ   r×   ÚpopÚ_as_func_argrÜ   r   r  rÊ   r  Útuple)r—   rS  Úfuncnamer&  r-   ÚargÚellipsisÚargdeclnoderà   ÚresultrÊ   Úabis               r   rR  ÚParser._parse_function_typeÇ  sä  € Ü”g˜hŸm™m¨X°rÓ:Ó;ˆÜ Ö'‰FˆAÜ˜3 ×'Ó'Üð !?ð  ×2 ?°A¸±EÜ˜s F¨CÓ0ð2ñ!2ó 3ð 3ñ (ô �‹K˜!‰O÷ <Ü�v˜b‘z—‘¬	¯©×(@Ñ(@ÓA÷<ä�v˜b‘z—‘×+Ñ+Ü —‘×5Ñ5ó7÷<ð �2‰J�O‰O× Ñ ×&Ñ&¨?Ð*;Ñ;ð 	ö Ø�J‰JŒLÞÜð(Ø+3×+F°ñHóIð Iñ $*ó+Ú#)�Kð ×!Ò! 4×#;Ñ#;¸K×<LÑ<LÓ#MÓNÙ#)ð 	ð +æ˜D¤U§_¡_Ð$5Ó5ØˆDØ×0Ñ0°·±Ó?‰ˆð ˆÜ�8—=‘= '×*Ñ*Ø�}‰}×"Ñ" 2 3Ð'Ò+LÓLØ!�Ü×$Ò$¤U¨4£[°&ÀCÓHÐHùò+s   Å2H+c                 óä   • [        U[        R                  5      (       a!  [        R                  " UR                  U5      $ [        U[        R
                  5      (       a  UR                  5       $ U$ r   )rÐ   r   rO  rA  Úitemr  r<  r7  s      r   rd  ÚParser._as_func_argê  sQ   € Ü�dœEŸO™O×,Ñ,Ü×$Ò$ T§Y¡Y°Ó6Ð6Ü˜œe×3Ñ3×4Ñ4Ø×+Ñ+Ó-Ð-àˆKr   c                 óÊ  •  U R                   U   $ ! [         a     Of = fUnUR                  nUc0  Ub  SU-  nO$U =R                  S-  sl        SU R                  -  nS nO)UnU< SU< 3nU R                  R                  US5      u  pyUc˜  US:X  a  [        R                  " US S S 5      nObUS:X  a  [        R                  " US S S 5      nOBUS:X  a-  US	:X  a  [        S
5      eU R                  XbR                  5      nO[        SU< 35      eUb  U R                  WU5        O!US:X  a  UR                  b  [        SU-  5      eUR                  (       d  UR!                  U5        UR                  (       a/  SUR                  ;   a  U R                  SUR                  -  U5        XpR                   U'   US:X  a  U$ UR"                  c  U$ UR$                  b  [        SU-  5      e/ n
/ n/ n/ nUR"                   GH|  n['        UR(                  [*        R,                  R.                  5      (       a<  SR1                  UR(                  R2                  5      S	:X  a  U R5                  Xt5        Ms  UR6                  c  SnOU R9                  UR6                  5      nSU l        U R=                  UR(                  SS9u  nnU R:                  (       a  U R5                  Xt5        ['        U[        R                  5      (       a"  UR>                  (       a  U R5                  Xt5        U
RA                  UR                  =(       d    S5        URA                  U5        URA                  U5        URA                  U5        GM     [C        U
5      Ul        [C        U5      Ul"        [C        U5      Ul#        [C        U5      Ul$        US/[K        U5      -  :w  a?  ['        U[        R                  5      (       a   UR>                  (       a  [        U< S35      eU RL                  R                  S5      Ul'        URP                  (       a"  SUl(        U RR                  RA                  U5        U$ )Nz$%sr   z$%dr\   )NNr  r  r	  rÃ   z!Enums cannot be declared with ...zkind = z^enum %s: the '{}' declaration should appear on the first time the enum is mentioned, not laterr;  zanonymous %sz"duplicate declaration of struct %sr   rÅ   FTr
  z!: using both bitfields and '...;'r»   r	   )*r’   ÚKeyErrorrE   r�   r�   r  r   Ú
StructTypeÚ	UnionTyper   Ú_build_enum_typeÚvaluesrU   rÝ   r7   r?  Úforce_the_nameÚdeclsÚfldnamesrÐ   rÕ   r   rÑ   rÖ   r&   r×   Ú_make_partialÚbitsizerN  Ú_partial_lengthrÜ   Úpartialr    re  ÚfldtypesÚ
fldbitsizeÚfldqualsr%   r“   r»   Ú	completedr•   )r—   ÚkindrÕ   rE   rK  Ú
force_nameÚexplicit_namer  ræ   Ú_rx  r}  r~  r  rF   rz  Úfquals                    r   r  Ú"Parser._get_struct_union_enum_typeò  sÂ  € ð	Ø×(Ñ(¨Ñ.Ð.øÜó 	Ùð	úð ˆ
Ø�y‰yˆð ‰<ð Ñ%Ø %¨
Ñ 2‘à×'Ò'¨1Ñ,Õ'Ø %¨×(?Ñ(?Ñ ?�Ø‰Bà ˆMÛ!¢4Ð(ˆCØ×&Ñ&×*Ñ*¨3°Ó=‰EˆBà‰:Ø�xÓÜ×%Ò% m°T¸4ÀÓF‘Ø˜“Ü—_’_ ]°D¸$ÀÓE‘Ø˜“Ø  OÓ3Ü#Ð$GÓHÐHØ×*Ñ*¨=¿+¹+ÓF‘å$²DÐ%:Ó;Ð;ØÑØ—‘˜c 2Ô&øà�v‹~ $§+¡+Ñ"9Ü)ð<Ø>KñLóMð Mð �|�|Ø×Ñ˜jÔ)Ø�<�<˜C 2§7¡7›NØ�M‰M˜.¨2¯<©<Ñ7¸Ô<à&(×Ñ˜dÑ#ð �6‹>ØˆIð
 �:‰:ÑØˆIà�;‰;Ñ"ÜÐ@À4ÑGÓHÐHØˆØˆØˆ
ØˆØ—J•JˆDÜ˜4Ÿ9™9¤i§o¡o×&DÑ&D×EÑEØ—G‘G˜DŸI™IŸO™OÓ,°Ó?ð ×"Ñ" 2Ô.ÙØ�|‰|Ñ#Ø‘à×.Ñ.¨t¯|©|Ó<�Ø#(ˆDÔ Ø×2Ñ2°4·9±9ØEIð 3ð K‰KˆD�%à×#×#Ø×"Ñ" 2Ô.Ü˜$¤× 0Ñ 0×1Ñ1°d·l·lØ×"Ñ" 2Ô.Ø�O‰O˜DŸI™IŸO¨Ô,Ø�O‰O˜DÔ!Ø×Ñ˜gÔ&Ø�O‰O˜E×"ñ- ô. ˜H“oˆŒÜ˜H“oˆŒÜ˜jÓ)ˆŒÜ˜H“oˆŒØ˜"˜¤ J£Ñ/Ó/Ü˜"œe×.Ñ.×/Ñ/°B·J·JÜ)Û-/ð+2ó 3ð 3à—M‘M×%Ñ% hÓ/ˆŒ	Ø�<�<ØˆBŒLØ×Ñ×#Ñ# BÔ'Øˆ	s   ‚ ‘
�c                 óÄ   • [        U[        R                  5      (       d  [        U< S35      eUR	                  5       (       d  U(       d  [        U< S35      eSUl        g )Nz cannot be partialz is partial but has no C nameT)rÐ   r   ÚStructOrUnionr   Ú
has_c_namer7   r|  )r—   r  rK  s      r   ry  ÚParser._make_partialh  sE   € Ü˜"œe×1Ñ1×2Ñ2Ü³bÐ:Ó;Ð;Ø�}‰}�‰¦vÜ%Ë"Ð&NÓOÐOØˆ�
r   c                 ó^  • [        U[        R                  R                  5      (       aµ  UR                  nSUS   s=::  a  S::  aC  O  O@UR                  S5      n UR                  S5      (       a  [        US5      $ [        US5      $ US   S:X  a>  US   S:X  a5  [        U5      S:X  d  [        U5      S:X  a  US   S:X  a  [        US   5      $ [        SU< 35      e[        U[        R                  R                  5      (       a+  UR                  S:X  a  U R                  UR                   5      $ [        U[        R                  R                  5      (       a,  UR                  S:X  a  U R                  UR                   5      * $ [        U[        R                  R"                  5      (       a3  UR$                  U R&                  ;   a  U R&                  UR$                     $ [        U[        R                  R"                  5      (       aA  UR$                  S:X  a1  U(       a  SU l        g[+        SUR,                  R.                  -  5      e[        U[        R                  R0                  5      (       Ga  U R                  UR2                  5      nU R                  UR4                  5      nUR                  S:X  a  XE-   $ UR                  S:X  a  XE-
  $ UR                  S:X  a  XE-  $ UR                  S:X  a  U R7                  XE5      $ UR                  S:X  a  X@R7                  XE5      U-  -
  $ UR                  S:X  a  XE-  $ UR                  S:X  a  XE-	  $ UR                  S:X  a  XE-  $ UR                  S:X  a  XE-  $ UR                  S :X  a  XE-  $ [+        S!UR,                  R.                  -  5      e! [         a\    [        U5      S:”  aJ  UR                  5       SS S	:X  a  [        US
5      s $ UR                  5       SS S:X  a  [        US5      s $  Of = f[        SU< 35      e)"Nrí   r	   Ú9ÚuUlLrœ   r°   r   r$  rî   é   Ú0bzinvalid constant r%  rÅ   r
   é   Ú\éþÿÿÿÚ+rì   Ú__dotdotdotarray__Trb   zT:%d: unsupported '[...]' here, cannot derive the actual array length in this contextr   Ú/Ú%z<<z>>Ú&Ú|Ú^z?:%d: unsupported expression: expected a simple numeric constant)rÐ   r   rÑ   ÚConstantrû   rò   r$   rV   r½   r%   rñ   r   Úordr  r  rN  r  r'  rE   r”   r{  r   rQ  rA   ÚBinaryOpÚleftÚrightÚ_c_div)r—   r(  rÇ   rW   r�  rž  s         r   rN  ÚParser._parse_constanto  s}  € ô �h¤	§¡× 8Ñ 8×9Ñ9Ø—‘ˆAØ�a˜‘dÕ!˜cÖ!Ø—H‘H˜VÓ$�ð
-Ø—|‘| C×(Ñ(Ü" 1 a›yÐ(ä" 1 b›zÐ)ð �1‘˜“  2¡¨#£Ü˜“F˜a“K¤C¨£F¨a£K°A°a±D¸D³LÜ˜1˜R™5“zÐ!åºÐ <Ó=Ð=ä�x¤§¡×!8Ñ!8×9Ñ9Ø—‘˜sÓ"Ø×'Ñ'¨¯©Ó6Ð6ä�x¤§¡×!8Ñ!8×9Ñ9Ø—‘˜sÓ"Ø×(Ñ(¨¯©Ó7Ð7Ð7ä�x¤§¡×!3Ñ!3×4Ñ4Ø—‘ ×!4Ñ!4Ó4Ø×&Ñ& x§}¡}Ñ5Ð5ä�x¤§¡×!3Ñ!3×4Ñ4Ø—M‘MÐ%9Ó9Þ Ø'+�Ô$ØÜð Eà%Ÿ^™^×0Ñ0ñ1ó 2ð 2ô �h¤	§¡× 8Ñ 8×9Ò9Ø×'Ñ'¨¯©Ó6ˆDØ×(Ñ(¨¯©Ó8ˆEØ�{‰{˜cÓ!Ø‘|Ð#Ø—‘ Ó#Ø‘|Ð#Ø—‘ Ó#Ø‘|Ð#Ø—‘ Ó#Ø—{‘{ 4Ó/Ð/Ø—‘ Ó#ØŸk™k¨$Ó6¸Ñ>Ñ>Ð>Ø—‘ Ó$Ø‘}Ð$Ø—‘ Ó$Ø‘}Ð$Ø—‘ Ó#Ø‘|Ð#Ø—‘ Ó#Ø‘|Ð#Ø—‘ Ó#Ø‘|Ð#äð 1Ø3;·>±>×3FÑ3FñGó Hð 	Høôu "ó -Ü˜1“v “zØŸ7™7›9 Q q˜>¨TÓ1Ü#& q¨"£:Ò-ØŸW™W›Y q¨˜^¨tÓ3Ü#& q¨!£9Ò,ùð-úõ  ºÐ <Ó=Ð=s   Á!N7 Á=N7 Î7<PÏ5#PÐPc                 óH   • X-  nUS:  US:  -  (       a  X-  S:w  a  US-  nU$ )Nr	   r   r   )r—   ÚaÚbrj  s       r   rŸ  ÚParser._c_div¸  s/   € Ø‘ˆØ�‰U�q˜1‘u× A¡E¨a£<Ø�a‰KˆFØˆr   c                 ó  • Ubí  Sn/ n/ nSnUR                    H   n[        R                  UR                  5      (       a  SnM+  UR                  b  U R                  UR                  5      nUR                  UR                  5        UR                  U5        U R                  UR                  U5        US-  nM¢     [        U5      n[        U5      n[        R                  " XU5      nX8l        U$ [        R                  " USS5      nU$ )NFr	   Tr   r   )ÚenumeratorsÚ_r_enum_dotdotdotr)   rE   rû   rN  r    rè   re  r   ÚEnumTyper|  )	r—   rƒ  rw  r|  r¦  Ú
enumvaluesÚnextenumvaluer	  r  s	            r   rt  ÚParser._build_enum_type¾  sð   € ØÑØˆGØˆKØˆJØˆMØ×)Ô)�Ü$×*Ñ*¨4¯9©9×5Ñ5Ø"�GÙØ—:‘:Ñ)Ø$(×$8Ñ$8¸¿¹Ó$D�MØ×"Ñ" 4§9¡9Ô-Ø×!Ñ! -Ô0Ø×#Ñ# D§I¡I¨}Ô=Ø Ñ"’ñ *ô   Ó,ˆKÜ˜zÓ*ˆJÜ—’ ¸JÓGˆBØ ŒJð ˆ	ô —’ ¨r°2Ó6ˆBØˆ	r   c                 óD  • UR                   R                  5        HN  u  nu  p4UR                  S5      (       a  M   UR                  SS5      S   nUS;   d  M=  U R	                  X#SUS9  MP     UR
                  R                  5        H  u  pgU R                  Xg5        M     g )Nzanonymous $enum_$r\   r   r	   )r  r  r	  Ú	anonymousr}   T)r-  rÊ   )r�   rù   r$   r+  rÝ   r”   rè   )r—   ÚotherrE   r  rÊ   r�  ÚkÚvs           r   ÚincludeÚParser.includeÖ  s�   € Ø!&×!4Ñ!4×!:Ñ!:Ö!<ÑˆD‘+�2Ø�‰Ð2×3Ñ3ÙØ—:‘:˜c 1Ó% aÑ(ˆDØÐJÕJØ—‘˜d°¸U�ÓCñ "=ð ×(Ñ(×.Ñ.Ö0‰DˆAØ×Ñ Ö%ò 1r   c                 óô  • UR                   R                   R                  nUS/:X  a   [        R                  " UR                  5      $ US/:X  aA  U R
                  c  SUR                  -  U l        [        R                  " UR                  5      $ US/:X  aA  U R
                  c  SUR                  -  U l        [        R                  " UR                  5      $ [        SUR                  R                  -  5      e)NrÃ   Ú__dotdotdotint__z'typedef int... %s'Ú__dotdotdotfloat__z'typedef float... %s'ú*:%d: unsupported usage of "..." in typedef)rÕ   r×   r   Úunknown_typerE   r–   ÚUnknownIntegerTypeÚUnknownFloatTyper   rQ  rA   )r—   rF   r§   s      r   rØ   ÚParser._get_unknown_typeà  sÑ   € Ø—I‘I—N‘N×(Ñ(ˆ	Ø˜Ð)Ó)Ü×%Ò% d§i¡iÓ0Ð0àÐ+Ð,Ó,Ø×%Ñ%Ñ-Ø)>ÀÇÁÑ)J�Ô&Ü×+Ò+¨D¯I©IÓ6Ð6àÐ-Ð.Ó.à×%Ñ%Ñ-Ø)@À4Ç9Á9Ñ)L�Ô&Ü×)Ò)¨$¯)©)Ó4Ð4äÐCØŸ™Ÿ™ñ)ó *ð 	*r   c                 óä   • UR                   R                   R                   R                  S/:X  a   [        R                  " UR                  5      $ [        SUR                  R                  -  5      e)NrÃ   r¶  )rÕ   r×   r   Úunknown_ptr_typerE   r   rQ  rA   )r—   rF   s     r   rÛ   ÚParser._get_unknown_ptr_typeó  sV   € Ø�9‰9�>‰>×Ñ×$Ñ$¨Ð(9Ó9Ü×)Ò)¨$¯)©)Ó4Ð4ÜÐCØŸ™Ÿ™ñ)ó *ð 	*r   )
r�   r�   rŽ   rÏ   r”   r“   r{  r•   r’   r–   )FFNF)Fr	   r   )NFN)NF)F) rß   Ú
__module__Ú__qualname__Ú__firstlineno__r˜   r­   rµ   r¤   r¡   r¾   rè   rö   rÌ   r  rÓ   r!  r  rÝ   r8  r   rÜ   rR  rd  r  ry  rN  rŸ  rt  r±  rØ   rÛ   Ú__static_attributes__r   r   r   r‹   r‹   '  sª   † ò&ò%$òNòð AEØ#ô)ò0=ò~'ò0ò.ò"
+ò1Pòf3ò7ô1ò
ô.ð JOØ,0ôg%ôR!IòFôtòlôGHòRòò0&ò*õ&*r   r‹   )4r   r   Úcommontypesr   r   Úerrorr   r   r   r   ÚImportErrorr�   r²   ÚsysÚversion_infoÚthreadÚ_threadÚallocate_lockrŸ   r   rž   ÚcompileÚDOTALLÚ	MULTILINErc   rd   rO   rn   r§  rl   r€   r   Ú
IGNORECASErú   rj   ri   rk   r5   r   rq   rr   r   r/   r9   rB   rG   rQ   rY   rz   r‰   Úobjectr‹   r   r   r   Ú<module>rÏ     sç  ðÝ ß :ß &ðÝ)÷ Ó ðØ
×Ñ˜$ÓÜ ãØ× Ò Ó"€Dòð ,Ð Ø�ZŠZÐ7ØŸ	™	 B§L¡LÑ0ó2€
à�ZŠZð 2àŸ	™	 B§L¡LÑ0ó2€	ð —J’JÐAÀ2Ç<Á<ÓPÐ Ø—*’*Ð=Ó>€Ø—J’JÐ3Ó4Ð Ø—:’:Ð1Ó2Ð Ø�:Š:�iÓ €Ø€Ø—’Ð4°b·m±mÓD€Ø�jŠjÐ2Ó3€Ø�jŠjÐ6Ó7€Ø�:Š:�nÓ%€Ø—:’:ð Oó PÐ à—j’jØ.ó0Ð à—:’:ð (ó )Ð à—Z’ZÐ <Ó=Ð òò(òT0òd
ò;ò$ò3ò@òD%ôPP*ˆVõ P*øðC	 ó Þðûð ó ØƒDðús"   ˜G «*G( Ç
G%Ç$G%Ç(G4Ç3G4