+
     h  c                   s6   ^ RI t ^ RIt^ RIt^ RIt^RIHtHt ^RIHt ^RI	5 Rt
RtRt]P                  R8g  ;'       g/    ]P                  R"8  ;'       g    ]P                  R#8  ;'       d    ]P                  ! R	4      '       * t ! R
 R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      t]P                  R$8  d   ] P.                  tM ! R R] P2                  4      tR tR tR%R ltR%R ltR tR tR t R t!R  t"R&R! lt#R# )'    N)ffiplatformmodel)VerificationError)*i&  i'  i(  win32ZPy_GIL_DISABLEDc                   s6   a  ] tR t^t o RR ltR tR tRtV tR# )
GlobalExprc                B    Wn         W n        W0n        W@n        WPn        R # N)nameaddresstype_opsizecheck_value)selfr	   r
   r   r   r      &&&&&&6/usr/lib64/python3.14/site-packages/cffi/recompiler.py__init__ZGlobalExpr.__init__   s    		&    c           	     s    R V P                   : RV P                  : RV P                  P                  4       : RV P                  : R2	# )  { "z", (void *), z
, (void *) },)r	   r
   r   	as_c_exprr   r      &r   r   ZGlobalExpr.as_c_expr   s0    IIt||T\\%;%;%=tyyJ 	Jr   c                sr    R V P                   P                  4       V P                  V P                  3,          # )z
b'%s%s',%d)r   as_python_bytesr	   r   r   r   r   as_python_exprZGlobalExpr.as_python_expr   s2    t||;;=tyy#//1 1 	1r   )r
   r   r	   r   r   N)r    r    	__name__
__module____qualname____firstlineno__r   r   r   __static_attributes____classdictcell____classdict__   @r   r   r      s     'J1 1r   r   c                   s8   a  ] tR t^t o R tR tR tR tRtV t	R# )	FieldExprc                r   r   )r	   field_offset
field_sizefbitsizefield_type_op)r   r	   r&   r'   r(   r)   r   r   r   ZFieldExpr.__init__   s    	($ *r   c                s    R \        V P                  4      ,          pRV P                  : RV P                  : R2RV: RV P                  : R2,           RV: RV P                  P                  4       : R2,           # ) r   ", z,
z     z   r   )lenr	   r&   r'   r)   r   )r   Zspaces   & r   r   ZFieldExpr.as_c_expr&   sZ    s499~%%)YY0A0AB%+T__=>%+T-?-?-I-I-KLM 	Nr   c                s    \         hr   )NotImplementedErrorr   r   r   r   ZFieldExpr.as_python_expr,   s    !!r   c                s   V P                   P                  \        8X  d   R pM;V P                   P                  \        8X  d   \	        V P
                  4      pM\        hRV P                   P                  4       : V: V P                  : R2# ) b'')	r)   opOP_NOOPOP_BITFIELDformat_four_bytesr(   r.   r   r	   )r   Z	size_exprr-   r   as_field_python_exprZFieldExpr.as_field_python_expr/   sj      G+I""k1)$--8I%%"00@@B'"ii) 	)r   )r(   r&   r'   r)   r	   N)
r   r   r   r   r   r   r   r6   r    r!   r"   r$   r   r%   r%      s     +N"	) 	)r   r%   c                   s2   a  ] tR t^:t o R tR tR tRtV tR# )StructUnionExprc	                sf    Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        R # r   )r	   
type_indexflagsr   	alignmentcommentfirst_field_indexc_fields)	r   r	   r8   r9   r   r:   r;   r<   r=   s	   &&&&&&&&&r   r   ZStructUnionExpr.__init__;   s+    	$
	"!2 r   c                sx   R V P                   V P                  V P                  3,          RV P                  : RV P                  : R2,           RV P
                  \        V P                  4      3,          ,           V P                  '       d!   RV P                  ,          ,           R,           # R,           R,           # )z  { "%s", %d, %s,z
    r   z%d, %d z	/* %s */ r/   z},)	r	   r8   r9   r   r:   r<   r,   r=   r;   r   r   r   r   ZStructUnionExpr.as_c_exprF   s    #tyy$//4::&NN&*ii@At55s4==7IJJK 26;-G 	 	 DFG 	 	r   c                s   \        V P                  \        4      pV P                   Uu. uF  pVP	                  4       NK  	  ppR \        V P                  4      : \        V4      : V P                  : RRP                  V4      : R2# u upi )z(b'',,))	Zevalr9   ZG_FLAGSr=   r6   r5   r8   r	   join)r   r9   Zc_fieldZfields_expr   &   r   r   ZStructUnionExpr.as_python_exprM   sy    TZZ)&*mm5&37 335&3 	 5 doo.e$IIHH[!	# 	#5s   B
)r:   r=   r;   r<   r9   r	   r   r8   Nr   r"   r$   r   r7   r7   :   s     	!# #r   r7   c                   s2   a  ] tR t^Wt o R tR tR tRtV tR# )EnumExprc                r   r   r	   r8   r   signedallenums)r   r	   r8   r   rE   rF   r   r   r   ZEnumExpr.__init__X   s    	$	 r   c                s    R V P                   V P                  V P                  V P                  V P                  3,          # )z1  { "%s", %d, _cffi_prim_int(%s, %s),
    "%s" },rD   r   r   r   r   ZEnumExpr.as_c_expr_   s9    !%DOO!%DKK!HH 	Ir   c                s"   R\         R\        R\        R\        R\        R	\
        R
\        R\        /V P                  V P                  3,          pR\        V P                  4      : \        V4      : V P                  : RV P                  : R2# )   r0   z\x00r1   )rG   r    )rG   rG   )   r    )rH   rG   )   r    )rI   rG   )   r    )rJ   rG   )Z
PRIM_UINT8Z	PRIM_INT8ZPRIM_UINT16Z
PRIM_INT16ZPRIM_UINT32Z
PRIM_INT32ZPRIM_UINT64Z
PRIM_INT64r   rE   r5   r8   r	   rF   )r   
prim_indexr-   r   r   ZEnumExpr.as_python_exprd   sq    J)K*K*K*	
 ii$&
 &7t%G%6z%B%)YY? 	?r   )rF   r	   rE   r   r8   Nr   r"   r$   r   rC   rC   W   s     !I
	? 	?r   rC   c                   s2   a  ] tR t^ot o R tR tR tRtV tR# )TypenameExprc                s    Wn         W n        R # r   r	   r8   )r   r	   r8      &&&r   r   ZTypenameExpr.__init__p   s    	$r   c                s@    R V P                   V P                  3,          # )z  { "%s", %d },rM   r   r   r   r   ZTypenameExpr.as_c_exprt   s     DIIt#???r   c                sP    R \        V P                  4      : V P                  : R2# )r0   r1   )r5   r8   r	   r   r   r   r   ZTypenameExpr.as_python_exprw   s    -doo>		JJr   rM   Nr   r"   r$   r   rL   rL   o   s     %@K Kr   rL   c                   s  a  ] tR t^~t o ^ tRJR ltR tR tR tR t	R t
. RKOtR tRLR ltR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"RMR lt#R  t$R! t%R" t&]&t'R# t(R$ t)])t*R% t+]+t,R& t-R' t.R( t/RNR) lt0R* t1R+ t2R, t3R- t4RMR. lt5R/ t6R0 t7R1 t8R2 t9R3 t:R4 t;R5 t<R6 t=R7 t>R8 t?]?;t@tAR9 tBR: tCR; tDR< tER= tF]F;tGtHR> tIR? tJR@ tKRA tLRB tMRC tNRD tO]OtP]OtQRE tRRF tSRG tT]TtURH tVRItWV tXR# )O
Recompilerc                s@    Wn         W n        W0n        \        V n        R # r   )ffimodule_nametarget_is_pythonVERSION_BASE_version)r   rP   rQ   rR      &&&&r   r   ZRecompiler.__init__   s    & 0$r   c                s<    \        V P                  V4      V n        R # r   )maxrT   )r   Zver   &&r   needs_versionZRecompiler.needs_version   s    DMM3/r   c           
     s   / V n         V P                  R 4       \        V P                   \        R7      p. V n        V EFK  pVP
                  '       g   K  V P                   V,          e   Q h\        V P                  4      V P                   V&   V P                  P                  V4       VP                   F  p\        V\        P                  \        P                  \        P                  \        P                  \        P                  34      '       g   Q hV P                   V,          f#   \        V P                  4      V P                   V&   V P                  P                  V4       K  	  V P                  P                  R4       EKN  	  V F  pVP
                  '       d   K  V P                   V,          e   K.  \        V P                  4      V P                   V&   V P                  P                  V4       VP                   '       g   K  VP"                  f   K  V P                  P                  R4       K  	  RV P                   P%                  4       9  g   Q h/ V n        / V n        V Fe  p\        V\        P*                  4      '       d   RV P&                  V&   K4  \        V\        P,                  4      '       g   KV  RV P(                  V&   Kg  	  \/        \        V P&                  R R7      4       F  w  rBW@P&                  V&   K  	  \/        \        V P(                  R R7      4       F  w  rBW@P(                  V&   K  	  V FC  p\1        V RVP2                  P4                  ,           4      pV! W P                   V,          4       KE  	  V P                   F  p\        V\6        4      '       d   K  Q h	  \9        V P                  4      V n        R# )ZcollecttypeZkeyNZENDLENc                     V P                   # r   r	   tpr   r   <lambda>/Recompiler.collect_type_table.<locals>.<lambda>       RWWr   c                 r[   r   r\   r]   r   r   r_   r`      ra   r   Z_emit_bytecode_)
_typesdict	_generatesortedstr
cffi_typesZis_raw_functionr,   appendargs
isinstancer   VoidTypeBasePrimitiveTypePointerTypeStructOrUnionOrEnumFunctionPtrTypeZis_array_typelengthZvalues_struct_unions_enumsStructOrUnionEnumType	enumerategetattr	__class__r   CffiOptuple)r   Z	all_declsr^   tp1imethodr2   s   &      r   collect_type_tableZRecompiler.collect_type_table   s   }%4??4	 B!!!r*222&)$//&:#&&r*77C%cENN,1,C,C,1,=,=,1,E,E,1,A,A	,C D D D D
 s+3/24??/C,OO**3/ # &&u- " B%%%$//"*=*E&)$//&:#&&r*###		(=OO**51  4??113333 !B"e1122*.##B'B//"&B	 
 vd&9&9*< > ?EA&'#? vdkk*< > ?EAKKO?
 BT#4r||7L7L#LMF2r*+ 
 //Bb&)))) "0r   c                sF    V P                   '       * pVP                  V4      # r   )rR   
enumfields)r   r^   Zexpand_anonymous_struct_union   && r   _enum_fieldsZRecompiler._enum_fields   s#     -1,A,A(A%}}:;;r   c                s   \        V\        P                  4      '       g3   \        V\        4      '       d   V F  pV P	                  V4       K  	  R # WP
                  9  Ed   R V P
                  V&   \        V\        P                  4      '       d"   V P	                  VP                  4       4       R # \        V\        P                  4      '       dv   VP                  ef   WP                  P                  P                  9  d@   V P                  V4       F(  w  r4 pV P	                  V P                  WV4      4       K*  	  R # R # R # VP                  4        F  w  rRV P	                  V4       K  	  R # R # r   )ri   r   ZBaseTypeByIdentityrx   _do_collect_typerb   rn   as_raw_functionrr   fldtypesrP   _parser_included_declarationsr   _field_typeZ
_get_items)r   r^   xZname1ry   _s   &&    r   r   ZRecompiler._do_collect_type   s   "e6677"e$$A))!, __$"&DOOB"e3344%%b&8&8&:;B 3 344;;*(("2"2"I"II,0,=,=b,A(Aq--d.>.>r#.NO -B J +
 MMODA))!, , %r   c                s   V P                   P                  P                  P                  4       p\	        V4       F@  w  pw  rEVP                  R ^4      w  rg \        V RV: RV: 24      p YPn	        T! YG4       KB  	  R#   \         d    \        RT,          4      hi ; i  \         d   p	\        P                  ! Y4       h Rp	?	ii ; i)r*   Z_generate_cpy_r   z"not implemented in recompile(): %rN)rP   r   Z_declarationsitemsrd   splitru   AttributeErrorr   _current_qualsZ	Exceptionr   Zattach_exception_info)
r   	step_namelstr	   r^   qualsZkindZrealnamer{   es
   &&        r   rc   ZRecompiler._generate   s    hh,,224!'D+2!ZZQ/NDA @I(K L
&+#r$ "-
 " A'84?A AA  ++A4s$   B ,B! B!C,CCc                s   / V n         V P                   F  p. V P                   V&   K  	  \        4       V n        V P	                  R 4       V P                  4        V P                   FH  pV P                   V,          pVR8w  d   VP                  R R7       \        V4      V P                   V&   KJ  	  V P                   R,          pV P                  P                  4        F:  w  r4V\        V4      8  g   Q hW$,          P                  VP                  8X  d   K:  Q h	  \        V4      \        V P                  4      8X  g   Q hV P                   R,          pV P                  P                  4        F:  w  r4V\        V4      8  g   Q hW$,          P                  VP                  8X  d   K:  Q h	  \        V4      \        V P                  4      8X  g   Q hR# )Zctxfieldc                 r[   r   r\   )entryr   r   r_   Z0Recompiler.collect_step_tables.<locals>.<lambda>  s    5::r   rY   struct_unionenumN)_lsts	ALL_STEPSset_seen_struct_unionsrc   _add_missing_struct_unionssortrx   rp   r   r,   r	   rq   )r   r   r   r^   rz      &    r   collect_step_tablesZRecompiler.collect_step_tables   sj   
I$&DJJy! (#&5 u'')I**Y'CG#56$)#JDJJy!	 ( jj(((..0EBs3x<<6;;"''))) 1 3x3t223333jj [[&&(EBs3x<<6;;"''))) ) 3x3t{{++++r   c                sJ    V P                   P                  VR ,           4       R# )Z
N)_fwrite)r   ZwhatrW   r   _prntZRecompiler._prnt  s    dTk"r   c                s    V P                   '       d   Ve   Q hV P                  V4       R # Vf   Q hV P                  W4       R # r   )rR   write_py_source_to_fwrite_c_source_to_f)r   fpreamblerN   r   write_source_to_fZRecompiler.write_source_to_f  sB       ###%%a('''$$Q1r   c                s    \        \        P                  P                  \        P                  P	                  \
        4      V4      R 4      pVP                  4       pVP                  4        V# )r)openospathrA   ZdirnameZ__file__Z	readlinesZclose)r   ZfilenameZglines   &&  r   _rel_readlinesZRecompiler._rel_readlines!  sC    bggooh7BCH		r   c           	     s(   Wn         V P                  pV P                  P                  e	   V! R4       \        '       g	   V! R4       V P                  R4      pVP                  R4      pV P                  R4      WEV^,           % V! RP                  V4      4       V P                  P                  R4      RP,          pV P                  P                  e   V! RV P                  : R	24       V! R
4       V P                  V P                  P                  4       V! R4       V! R4       V! RV: 24       V! R4       V! RV: 24       V! R4       V! RV: 24       V! R4       V P                  R4      pVP                  R4      pV P                  R4      WEV^,           % V! RP                  V4      4       V P                  \        4       V! R4       V! 4        V! V4       V! 4        V! R4       V! 4        V! R4       \        V P                  P                  4        UUu. uF  w  ruWW3NK
  	  upp4      p\!        V P"                  4       FI  w  rYRp
WX9   d   RW,          P%                  4       ,           p
V! RWYP'                  4       V
3,          4       KK  	  V P"                  '       g	   V! R4       V! R4       V! 4        \)        4       V n        V P-                  R4       / pV P.                   Fq  pV P0                  V,          p\3        V4      W&   W,          ^ 8  g   K2  V! RV: RV: R24       V F  pV! VP'                  4       4       K  	  V! R4       V! 4        Ks  	  V P                  P4                  '       dp   V! R 4       V P                  P4                   F6  p VP6                  R!,          w  ppTf   \;        R%4      hT! R&T: R'24       K8  	  V! R(4       V! R4       V! 4        V! R)4       V! R*4       V P.                   F0  pW,          ^ 8  d   V! R+V,          4       K!  V! R,V,          4       K2  	  V P.                   F#  pVR-8w  g   K  V! R.W,          V3,          4       K%  	  V P                  P4                  '       d
   V! R/4       MV! R04       V! R1\3        V P"                  4      3,          4       ^ pV P<                  ^ 8  g   V P                  P                  e
   V^,          pV! R2V,          4       V! R4       V! 4        V! R34       V! R44       V! R4       V! 4        V! R4       V! R54       V! R6V: R724       V! R84       V^,          '       d   V! R94       V! R:4       V! R;4       V! R<V P>                  ,          4       V! R=4       V! R>4       V! R?4       V! R4       V! R@4       V! RA4       V! RB4       V! RC4       V! RDV: RE24       V! RF4       V! RGV: RH24       V! RI4       V! RI4       V! R4       V! R54       V! RJV: RK24       V! R84       V! RLV P                  V P>                  3,          4       V! R@4       V! R4       V! R54       V! RMV: RK24       V! R84       V! RNV P                  V P>                  3,          4       V! R@4       V! R4       V! 4        V! R34       V! RO4       V! R4       R V n        R # u uppi   \8         d     \;        R"T P                  : R#T: R$24      hi ; i)QNz#define _CFFI_USE_EMBEDDINGz#define _CFFI_NO_LIMITED_APIz_cffi_include.hz#include "parse_c_type.h"
zparse_c_type.hr/   .z#define _CFFI_MODULE_NAME  "Z"z1static const char _CFFI_PYTHON_STARTUP_CODE[] = {z0 };z#ifdef PYPY_VERSIONz3# define _CFFI_PYTHON_STARTUP_FUNC  _cffi_pypyinit_z#elif PY_MAJOR_VERSION >= 3z+# define _CFFI_PYTHON_STARTUP_FUNC  PyInit_#elsez(# define _CFFI_PYTHON_STARTUP_FUNC  init#endifz_embedding.hz#include "_cffi_errors.h"
z_cffi_errors.hz>/************************************************************/zstatic void *_cffi_types[] = {z // z/* %2d */ %s,%sz  0z};declzstatic const struct _cffi_z	_s _cffi_zs[] = {z.static const char * const _cffi_includes[] = {NrH   Nffi object 
 includes 8, but the latter has not been prepared with set_source()zMnot implemented yet: ffi.include() of a Python-based ffi inside a C-based ffiz  "z",z  NULLz?static const struct _cffi_type_context_s _cffi_type_context = {z  _cffi_types,z  _cffi_%ss,z  NULL,  /* no %ss */r   z  %d,  /* num_%ss */z  _cffi_includes,z  NULL,  /* no includes */z  %d,  /* num_types */z  %d,  /* flags */z#ifdef __GNUC__z?#  pragma GCC visibility push(default)  /* for -fvisibility= */ZPyMODINIT_FUNCZ_cffi_pypyinit_z(const void *p[]){z%    if (((intptr_t)p[0]) >= 0x0A03) {zQ        _cffi_call_python_org = (void(*)(struct _cffi_externpy_s *, char *))p[1];z    }z    p[0] = (const void *)0x%x;z    p[1] = &_cffi_type_context;z#if PY_MAJOR_VERSION >= 3    return NULL;}z#  ifdef _MSC_VERz     PyMODINIT_FUNCz#  if PY_MAJOR_VERSION >= 3z     PyInit_z(void) { return NULL; }z#  elsez	     initz
(void) { }z#  endifZPyInit_(void)z5  return _cffi_init("%s", 0x%x, &_cffi_type_context);Zinitz.  _cffi_init("%s", 0x%x, &_cffi_type_context);z#  pragma GCC visibility pop) r   r   rP   
_embeddingUSE_LIMITED_APIr   indexrA   rQ   r   _print_string_literal_in_arrayrX   VERSION_EMBEDDEDdictrb   r   rt   rf   _get_c_namer   r   _seen_constantsrc   r   r   r,   _included_ffis_assigned_sourcer   r   _num_externpyrT   )r   r   r   prntr   rz   Zbase_module_namer^   typeindex2typer2   r;   Znumsr   r   r   ffi_to_includeincluded_module_nameincluded_sourcer9   s   &&&                r   r   ZRecompiler.write_c_source_to_f'  s[   zz88*.//0 ##$56KK56**+;<!RWWU^  ++11#6r:88*d6F6FHIDE//0C0CDL&' # $./ # $M # $N''7E9:A../?@EAaCL /0 	MNXMN 	-.doo6K6K6MN6M7Bw6MNOt/EAG" >#4#@#@#BB"a%AAB	 0
 KT
  #uv I**Y'C!#hDO"y* + E*+ !T
 ( 88"""AB"&(("9"98&77; :(/ #*+34 4 "689 #: NJF 	NOI"^i/0,y89	 (
 IG#+t	.JJK ( 88"""$%-.%T__)=(??@!TXX%8%8%DQJE!E)*T
 	NOX"#5EGHS	19989 E FM-=>./() XS	 	 !"#*+8HJKY(8:;ZZ*+"245S	DdmmH- - 	.S	W/12S	=dmmA- - 	.S	X+,Xw OH & 8+ !HHn78 88s   #[!
%[''*\c                sJ   \        V\        4      '       d   R V: R2# \        V\        \        34      '       dW   V Uu. uF  q P	                  V4      NK  	  pp\        V4      ^8X  d   VP                  R4       RRP                  V4      : R2# VP                  4       # u upi )r0   r1   r/   (r?   r@   )	ri   re   listrx   _to_pyr,   rg   rA   r   )r   r   itemZrepr   r   r   ZRecompiler._to_py  s    a>!a$''123;;t$C33x1}

2 XXc],,!!	 4s   B c           
     s   Wn         V P                  pV! R 4       V! R4       \        V P                  P                  ;'       g    R4      p\        V4       FU  pV P                  P                  V,          p VP                  R,          w  rgTe   \        R4      hT! RYd3,          4       KW  	  V! 4        V! R	V P                  : R
24       V! RV P                  3,          4       RV n
        \        V P                  4      V n        V P                   Uu. uF  qP                  4       NK  	  p	pV! RV P                  RP                  V	4      4      : R24       \!        V P"                  P%                  4        U
Uu. uF  w  rWJ3NK
  	  upp
4      pV P&                   FQ  pV P(                  V,          p\        V4      ^ 8  g   K(  VR8w  g   K1  V! RV: RV P                  V4      : R24       KS  	  V^ 8  d=   T! RRP                  \        V4       Uu. uF  pRV,          NK  	  up4      : R24       V! R4       R#   \         d     \        RT P                  : RT: R24      hi ; iu upi u upp
i u upi )z# auto-generated filezimport _cffi_backendr   r   r   r   NzMnot implemented yet: ffi.include() of a C-based ffi inside a Python-based ffizfrom %s import ffi as _ffi%dzffi = _cffi_backend.FFI('r>   z    _version = 0x%x,z    _types = r/   r?   r   z    _zs = z    _includes = (r   z_ffi%dz,),r@    )r   r   r,   rP   r   ranger   r   r   rQ   rT   rx   rf   r   r   rA   r   rb   r   r   r   )r   r   r   Znum_includesrz   r   r   r   r2   Z	types_lstr^   r   r   r   s   &&            r   r   ZRecompiler.write_py_source_to_f  s)   zz 	$%#$ 4882288b9|$A!XX44Q7N4"33B7 6$ *'45 5 /3G2KKL % 	0@0@BC#t}}&667  048OODOb'')O	D4;;rwwy/A#BDEdoo6K6K6MN6M7Bw6MNO I**Y'C3x!|	W 4DKK4DEF ( !		|1DE1DA8a<<1DEFI J 	S	C " 4' .34 44" EN Fs   8II/>I4
I:*I,c                s(    V P                   V,          # r   )rb   )r   typerW   r   _gettypenumZRecompiler._gettypenum  s    t$$r   c           
     s   R p\        V\        P                  4      '       d   VP                  4       '       g   VP	                  4       '       d(   VP
                  R8w  d   RpRVP
                  ,          pM\        V\        P                  4      '       d   RVP                  R 4      : R2pMQVP                  R 4      pRV: RVP
                  P                  RR4      : 2pVR9   d   V P                  \        4       R	pEM\        V\        P                  4      '       d   V P                  WW44       R
# \        V\        P                  4      '       g!   \        V\        P                  4      '       dD   V P                  RW0P                  V4      V3,          4       V P                  RV,          4       R
# \        V\        P                   4      '       d4   RVP                  R 4      ,          pRV P                  V4      ,          pRpM\#        V4      hV P                  RV: RV: RV: V: R24       V P                  RV: RVP                  R 4      : RV: R24       V P                  RV,          4       R
# )r/   _BoolZ_cffi_to_c_intz, %sr   z)_cffi_to_c_doublez)_cffi_to_c_r*   r   z-1Nz6  if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)z    %s;z(%s)_cffi_to_c_pointerz, _cffi_type(%d)ZNULL  z = );z  if (z == (r@   z && PyErr_Occurred())Zchar16_tZchar32_t)ri   r   rk   is_complex_typeis_integer_typer	   UnknownFloatType
get_c_namereplacerX   VERSION_CHAR16CHAR32rl   "_convert_funcarg_to_c_ptr_or_arrayrm   r   r   rn   r.   )	r   r^   fromvartovarerrcodeZextraargZ	convertercnameZerrvalues	   &&&&&    r   _convert_funcarg_to_cZ Recompiler._convert_funcarg_to_c  s   b%11222;M;M;O;O!!##7(:,	!BGG+B 6 677 8:}}R7HJ	b)383577??33LN	44&&';<HE--..33B49DU6677U4455 JJO 0 0 4g>? @JJy7*+E112202==3DDI)D,<,<R,@@HH &b))

	7HMN

2==$h0 	1

9w&'r   c                s    \        V\        P                  4      '       d6   VP                  R 4       VP                  R4       VP                  R4       R# R# )zPy_ssize_t datasizez-struct _cffi_freeme_s *large_args_free = NULLzIif (large_args_free != NULL) _cffi_free_array_arguments(large_args_free);N)ri   r   rl   add)r   r^   	localvars	freelinesrU   r   _extra_local_variablesZ!Recompiler._extra_local_variablesC  sG    b%++,,MM/0MMIJMM J K -r   c                s   V P                  R 4       V P                  RV P                  V4      W#3,          4       V P                  R4       V P                  RV: RVP                  R4      : R24       V P                  RV P                  V4      W#3,          4       V P                  R4       V P                  R	V,          4       V P                  R
4       R# )z1  datasize = _cffi_prepare_pointer_call_argument(z(      _cffi_type(%d), %s, (char **)&%s);z  if (datasize != 0) {z    z  = ((size_t)datasize) <= 640 ? (r/   z!)alloca((size_t)datasize) : NULL;zF    if (_cffi_convert_array_argument(_cffi_type(%d), %s, (char **)&%s,z,            datasize, &large_args_free) < 0)z	      %s;z  }N)r   r   r   )r   r^   r   r   r      &&&&&r   r   Z-Recompiler._convert_funcarg_to_c_ptr_or_arrayJ  s    

FG

=R 'A2 2 	3

+,

2==$& 	' 	

 #&*&6&6r&:G%KL 	M

AB

;()

5r   c                s   \        V\        P                  4      '       d   VP                  4       '       d'   VP                  R 8w  d   RV: RVP                  : R2# \        V\        P
                  4      '       d   RV: R2# VP                  R8w  dZ   VP                  4       '       gD   VP                  P                  RR4      pVR9   d   V P                  \        4       RV: R	V: R2# R
W P                  V4      3,          # \        V\        P                  \        P                  34      '       d   RW P                  V4      3,          # \        V\        P                  4      '       d8   RW P                  \        P                  ! VP                  4      4      3,          # \        V\        P                  4      '       dJ   VP                   f#   \#        RVP%                  4       : RV: R24      hRW P                  V4      3,          # \        V\        P&                  4      '       d   R
W P                  V4      3,          # \)        V4      h)r   z_cffi_from_c_int(r   r@   z_cffi_from_c_double(long doubler*   r   Z_cffi_from_c_r   z/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r1   z' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d))r   )ri   r   rk   r   r	   r   r   r   rX   r   r   rl   rn   	ArrayTyper   rr   Zfldnames	TypeErrorr   rs   r.   )r   r^   Zvarcontextr      &&&& r   _convert_expr_from_cZRecompiler._convert_expr_from_cX  s   b%1122!!##7(:58"''BBB 6 6774799M)"2D2D2F2FS144&&';<05s;;H))"-L/ / /U..0E0EFGGE%%b)I+ + +EOO,,E%%e&7&7&@AIC C CE//00{{"NN$g!/ 0 0E%%b)I+ + +ENN++D%%b)H+ + + &b))r   c                s0    V P                  VR V: R24      # )z(*(z *)0))_global_typer   r^   r	   rN   r   _typedef_typeZRecompiler._typedef_type{  s      T%;<<r   c                F    V P                  V P                  W4      4       R # r   )r   r   r   rN   r   !_generate_cpy_typedef_collecttypeZ,Recompiler._generate_cpy_typedef_collecttype~  s    d00:;r   c                    R # r   r   r   rN   r   _generate_cpy_typedef_declZ%Recompiler._generate_cpy_typedef_decl      r   c                s    V P                   V,          pV P                  R ,          P                  \        W#4      4       R# )typenameN)rb   r   rg   rL   )r   r^   r	   r8      &&& r   _typedef_ctxZRecompiler._typedef_ctx  s,    __R(


:%%l4&DEr   c                sj   V P                  W4      pV P                  W4       \        VR R4      R8X  d    V P                  WP                  RR7       R# \        V\        P                  4      '       d@   V P                  VP                  VP                  P                  VP                  VR7       R# R# )ZoriginNZunknown_type)
approxname)r   	named_ptr)	r   r   ru   _struct_ctxr	   ri   r   ZNamedPointerTypetotyper   rN   r   _generate_cpy_typedef_ctxZ$Recompiler._generate_cpy_typedef_ctx  s    )"#2x&.8RT:E2233RYY		277')  + 4r   c                s    V P                  VP                  4       4       VP                  '       d(   V P                  '       g   V P                  V4       R # R # R # r   )r   r   ellipsisrR   r   rN   r   "_generate_cpy_function_collecttypeZ-Recompiler._generate_cpy_function_collecttype  sB    b0023;;;t444!!"%  5;r   c                s   V P                   '       d   Q h\        V\        P                  4      '       g   Q hVP                  '       d   V P                  W4       R # V P                  p\        VP                  4      pV^ 8X  d   RpMV^8X  d   RpMRp. p. pRV,          p\        VP                  4       FE  w  rVP                  V
P                  RV	,          V4      4       VP                  RV	,          4       KG  	  RP                  V4      pT;'       g    RpVP                  '       d   VP                  R	,           pMR
pV: RV: RV: R2pV! RVP                  P                  V4      : 24       V! R4       RP                  V4      pRp\        VP                  \        P                  4      '       d   R
pV! RV: V: RV: R24       V! R4       V! R4       V! R4       V! RV: RV: R24       V! R4       RV,          p\        VP                  4       F-  w  rV
P                  RV	,          V4      pV! RV,          4       K/  	  \!        4       p\!        4       pVP                   F  p
V P#                  V
VV4       K  	  \%        V4       F  pV! RV: R24       K  	  \        VP                  \        P                  4      '       g@   RpRV,          pRVP                  P                  RV4      ,          pV! V4       V! R4       MR pR
p\        VP                  4      ^8  d   \'        \        VP                  4      4      pV F  p	V! RV	,          4       K  	  V! 4        T! RT\        V4      \        V4      RP                  V U	u. uF  p	R V	,          NK  	  up	4      3,          4       V! R!4       V! 4        \        VP                  4       F.  w  rV P)                  V
R"V	,          RV	,          R#4       V! 4        K0  	  V! R$4       V! R%4       \'        \        VP                  4      4       U	u. uF  p	RV	,          NK  	  pp	RP                  V4      pV! R&V: V: RV: R'24       V! R(4       V! R)4       V! 4        V! R*4       V^ 8X  d	   V! R+4       V'       dL   V! R,V P+                  VP                  R-R.4      ,          4       V F  pV! RV,           4       K  	  V! R/4       M(V F  pV! RV,           4       K  	  V! R04       V! R14       V! R4       V! R24       R3 pR4p. p. pRV,          p\        VP                  4       F_  w  rR
pV! V
4      '       d   R5pR6pV
P                  R7VV	3,          V4      pVP                  V4       VP                  R8VV	3,          4       Ka  	  VP                  pV! V4      '       dD   RV,          pVP                  R9V4      pVP-                  ^ V4       \        P.                  pR pR:pR6pV'       d   RP                  V4      pT;'       g    RpV: RV: RV: R2pV! RVP                  V4      : 24       V! R4       V'       d	   V! V4       RP                  V4      pV! R&V: V: RV: R'24       V'       d	   V! R;4       V! R4       MV! R<V: R=V: 24       V! R>4       V! 4        R # u up	i u up	i )?NZnoargZarg0rh   argument of %sz x%dzx%dr   voidr*   r/   Z_cffi_d_r   r@   static r   zreturn r   r   r   z#ifndef PYPY_VERSIONzstatic PyObject *Z_cffi_f_z(PyObject *self, PyObject *z  %s;;z	result = result of %sz resultz  PyObject *pyresult;z  PyObject *arg%d;z1  if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))z&arg%dr   zarg%dzreturn NULLz  Py_BEGIN_ALLOW_THREADSz  _cffi_restore_errno();  { z); }z  _cffi_save_errno();z  Py_END_ALLOW_THREADSz  (void)self; /* unused */z  (void)noarg; /* unused */z  pyresult = %s;resultzresult typez  return pyresult;z  Py_INCREF(Py_None);z  return Py_None;r   c                 s    \        V \        P                  4      ;'       g3    \        V \        P                  4      ;'       d    V P	                  4       # r   )ri   r   rr   PrimitiveTyper   )r   r   r   need_indirectionZ@Recompiler._generate_cpy_function_decl.<locals>.need_indirection  sG    tU%8%89 - -e&9&9: , ,))+.r   Fr   Tz %sx%dz%sx%dz *resultz
*result = z  return result;z#  define _cffi_f_z	 _cffi_d_r   )rR   ri   r   rn   r   _generate_cpy_constant_declr   r,   rh   rt   rg   r   rA   abir  rj   r   r   rd   r   r   r   ZinsertZ	void_type)r   r^   r	   r   numargsZargname	argumentsZcall_argumentsr   rz   r   repr_argumentsr  name_and_argumentsZresult_codeargr   r   r   Zresult_declZrngZfreeliner  Z
differenceZindirectionZ	tp_results   &&&                       r   _generate_cpy_function_declZ&Recompiler._generate_cpy_function_decl  s   ((((("e334444;;; ,,R6zzbgg,a<G\GG 	"T) )GAT__VaZAB!!%!), * 9-'116666&&3,CC36nMBII001CDFGS	>2bii00Kk4@AS	#$ !4IJS	"T) )GA//&1*g6C3 * E	E	GGD''iC 9%DD"# & "))U^^44%K$t+G!BII$8$8G$LLK()KKrww<!BGG%C)A-. FDc#hC		5A8a<<56H8 8 9 #$ )GA&&tWq[%!)'46F *
 	'('(-23rww<-@A-@%!))-@A>2+t^DE$%%&)*a<./#**299hNO P%TH_% &%&%TH_% &()$%S	W	. 
	"T) )GAK%%!!
//(k1-="=wGCS!!!'[!,<"<= * II	I&&$t+G&&z7;CQ$IK&KJ!YYy1N+55vN7:D7E"G	 4 45G HJKI[!!YY~6Nk4HI'(IdDABXg 6 Bs   [?["c           
     s   VP                   '       d&   V P                  '       g   V P                  W4       R # V P                  VP	                  4       ,          p\        VP                  4      pV P                  '       d   \        pM"V^ 8X  d   \        pMV^8X  d   \        pM\        pV P                  R,          P                  \        VRV,          \        WS4      RV,          R7      4       R # )Nglobalz
_cffi_f_%sz
_cffi_d_%s)r   )r   rR   _generate_cpy_constant_ctxrb   r   r,   rh   ZOP_DLOPEN_FUNCZOP_CPYTHON_BLTN_NZOP_CPYTHON_BLTN_OZOP_CPYTHON_BLTN_Vr   rg   r   rw   )r   r^   r	   r8   r  Z	meth_kind   &&&   r   _generate_cpy_function_ctxZ%Recompiler._generate_cpy_function_ctx;  s    ;;;t444++B5__R%7%7%9:
bgg,   &I\)I\)I)I

8##t\D0i4(4/1	2r   c                s   \        V\        P                  4      '       dj   VP                  pVR 8X  d   VP	                  R4      pRV: RV: R2pV P                  VRV,          VP                  4      p\        P                  ! Wd4      pV# )...r   z_cffi_array_len((()0)->r@   %s[0])ri   r   r   ro   r   r   r   )r   Z	tp_structZ
field_nameZtp_fieldactual_lengthZptr_struct_nametp_items   &&&&   r   r   ZRecompiler._field_typeQ  ss    h00$OOM%"+"6"6s";#Z!1&&y'J2F'/}}6Gw>Hr   c                s    V P                  V4       V P                  '       d+   VP                  4        F  pV P                  V4       K  	  R # R # r   )r   rR   anonymous_struct_fields_struct_collecttype)r   r^   fldtyper~   r   r  ZRecompiler._struct_collecttype]  sB    b!   557((1 8 !r   c           
     s   VP                   f   R # V P                  pRV: 2pV! R4       V! RV: RV: R24       V! R4       V! R4       V! R4       V P                  V4       F  w  rgr VP                  4       '       g   V^ 8  d   VR	8w  d   V! R
V: RV: RV: R24       KB  \	        V\
        P                  4      '       d7   VP                  e   VP                  R8X  d   VP                  pVR,           pKV  V! RVP                  RRV,          V	R7      : RV: R24       K  	  V! R4       V! RV: RV: R24       V! 4        R #   \         d%   p
T! R\        T
4      ,          4        R p
?
EK  R p
?
ii ; i)NZ_cffi_checkfld_Z_CFFI_UNUSED_FNzstatic void r   z *p)r   z8  /* only to generate compile-time warnings or errors */z
  (void)p;r/   z  (void)((p->z) | 0);  /* check that 'r   z' is an integer */r  z[0]r  z*tmpzfield %rr   z = &p->z; (void)tmp; }z
  /* %s */r   zstruct _cffi_align_z { char x; z y; };)r   r   r   r   ri   r   r   ro   r   r   r   re   )r   r^   r   r   r   ZcheckfuncnameZfnameZftyper(   fqualr   s   &&&&       r   _struct_declZRecompiler._struct_decld  sH   ;;zz/9;u=>S	GH\-1->->r-B)E(,((**h!m{05ueE F "%99!LL0ELLE4I!JJE!EME$$VZ-=U$K  .C( 	S	:uMN	 % ,\CF*++,s   ,9E'B EE<E77E<Nc                sj   V P                   V,          pR p. p\        V\        P                  4      '       d   VP	                  R4       VP
                  f   VP	                  R4       RpWP                  P                  P                  9  d   Ve%   W@P                  P                  P                  9  d   VP
                  f   MCVP                  '       g    \        VP                  4       4      '       d   MVP	                  R4       VP                  '       d@   VP                  ^8  d   \        V: RVP                  : R24      hVP	                  R4       MVP	                  R4       R	pR
P                  V4      ;'       g    Rp. pVEf   \        V P!                  V4      4      p	V	 EF3  w  rrV P#                  WV4      pV P%                  VRVP&                  : RV
: R24       \(        pV^ 8  d   \*        pRV,          pM_Ve/   \        V\        P,                  4      '       d   VP.                  f   RpM*RVf   VP1                  R4      MVP&                  : RV
: R2pVe   V^ 8  d   RpM4Ve   RVP&                  : RV
: R2pMRVP1                  R4      : RV
: R2pVP	                  \3        V
VW\5        WP                   V,          4      4      4       EK6  	  \7        V P8                  R,          4      pV P8                  R,          P;                  V4       Vf   RpR%pRpM1Ve   RVP&                  : R2pR pMR!V: R2pR"V: R#2pR pMRpR&pR&pTpV P8                  R$,          P	                  \=        VP&                  WWVVVVV4      4       V P>                  PA                  V4       R # )'NZ_CFFI_F_UNIONZ_CFFI_F_OPAQUEZopaqueZ_CFFI_F_CHECK_FIELDSz is declared with 'pack=zi'; only 0 or 1 are supported in API mode (try to use "...;", which does not require a 'pack' declaration)Z_CFFI_F_PACKEDZ_CFFI_F_EXTERNALZexternalZ|0zfield 'r   r1   z%d /* bits */z
(size_t)-1z	sizeof(((r   r  r@   z(size_t)(((char *)&((z)4096)->z) - (char *)4096)z	offsetof(r/   r   r   z
(size_t)-2Zunnamedz	sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)r   r   )!rb   ri   r   Z	UnionTyperg   r   rP   r   r   partialZanyr  Zpackedr.   rA   r   r   r   _check_not_opaquer	   r3   r4   r   ro   r   r%   rw   r,   r   Zextendr7   r   r   )r   r^   r   r   r   r8   Zreason_for_not_expandingr9   r=   r}   Zfldnamer  r(   r  r2   r   Zoffsetr<   Zalignr;   s   &&&&&               r   r   ZRecompiler._struct_ctx  s4   __R(
#' b%//**LL);;LL)*'/$hh&&==="(("2"2"I"II{{"s2#=#=#?@@34yyy99q=- RYY() )
 -.LL+,'1$&&3#+d//34J5?1(**2@&&w:<''7'KM q=$B*X5D]"7EOO<<.'D /8.?c*09?!D =HM)F*!1F + 46==3DgNFgvt$R)ABDE3 6@8 !$DJJw$7 8JJw&&x0}##(/8~~?D8E ) ,12DDNPEDE ".G

>"))BGGZeW-x9	: 	  $$R(r   c                s    \        V\        P                  4      '       d   VP                  pK.  \        V\        P                  4      '       d#   VP
                  f   \        RV,          4      hR # R # )Nz0%s is of an opaque type (not declared in cdef()))ri   r   r   r   rr   r   r   )r   r^   ZlocationrN   r   r   ZRecompiler._check_not_opaque  sX    U__--Bb%--..2;;3FBXMO O 4G.r   c                sZ   \        V P                  P                  4       4      pVP                  R  R7       V F  w  r#W P                  9  g   K  VP
                  '       d   \        RV: R24      hVP                  P                  R4      '       d<   VP                  R,          P                  4       '       d   VP                  R,          pMFVP                  R8X  d'   VP                  R8X  d   RpV P                  VR4       M\        RV: 24      hV P                  VRV4       K  	  R# )	c                 s    V ^,          # )rG   r   )Ztp_orderr   r   r_   Z7Recompiler._add_missing_struct_unions.<locals>.<lambda>  s    hqkr   rY   zinternal inconsistency: z* is partial but was not seen at this point$:rG   NNZ_IO_FILEZFILEN)r   rp   r   r   r   r  r.   r	   Z
startswithZisdigitZ	forcenamer   r   )r   r   r^   Zorderr   r   r   r   Z%Recompiler._add_missing_struct_unions  s    
 4&&,,./12IB111:::->@/C D D 77%%c**rwwr{/B/B/D/D!#JWW
*r||v/E!'J%%b&1-/1/4 5 5  T:6 r   c                (    V P                  V4       R # r   )r  r   rN   r    _generate_cpy_struct_collecttypeZ+Recompiler._generate_cpy_struct_collecttype  s      $r   c                sn    VP                  R 4      pRV9   d   W"P                  RR4      3# VRV,           3# )r/   r*   r   )r   r   )r   r^   r   r~   r   _struct_namesZRecompiler._struct_names  s:    b!%<--S111#+%%r   c                L    V P                   ! V.V P                  V4      O5!   R # r   )r  r$  r   rN   r   _generate_cpy_struct_declZ$Recompiler._generate_cpy_struct_decl  s     "6t11"56r   c                r%  r   )r   r$  r   rN   r   _generate_cpy_struct_ctxZ#Recompiler._generate_cpy_struct_ctx	  s     5d0045r   c                s    \        V\        P                  4      '       d   V P                  W4       R # V P	                  V4       R # r   )ri   r   rs   _generate_cpy_enum_collecttyper  r   rN   r   #_generate_cpy_anonymous_collecttypeZ.Recompiler._generate_cpy_anonymous_collecttype  s/    b%..))//9$$R(r   c                s    \        V\        P                  4      '       d   V P                  V4       R# V P	                  WR V,           4       R# Ztypedef_N)ri   r   rs   _generate_cpy_enum_declr  r   rN   r   _generate_cpy_anonymous_declZ'Recompiler._generate_cpy_anonymous_decl  s6    b%..))((,b
T(9:r   c                s    \        V\        P                  4      '       d   V P                  W4       R# V P	                  WR V,           4       R# r*  )ri   r   rs   	_enum_ctxr   r   rN   r   _generate_cpy_anonymous_ctxZ&Recompiler._generate_cpy_anonymous_ctx  s4    b%..))NN2$RzD'89r   c                s>   WB3V P                   9   d   \        R V: RV: R24      hV P                   P                  WB34       V P                  pRV: RV: 2pV'       dq   V! RV,          4       V! R4       V! RV: R24       V! R	V: R
V: R24       Ve'   V^ 8  d   RV3,          pV! RV: R24       V! R4       V! R4       V! R4       MEVe   Q hV! RV,          4       V! R4       V! RVP	                  R4      : RV: R24       V! R4       V! 4        R# )zduplicate declaration of z 'r1   Z_cffi_r   z$static int %s(unsigned long long *o)r   z  int n = (z) <= 0;z  *o = (unsigned long long)((z) | 0);  /* check that z is an integer */Nz%dUz  if (!_cffi_check_int(*o, n, z))z    n |= 2;z  return n;r   zstatic void %s(char *o)z  *(r   z)o = r   )r   r   r   r   r   )r   is_intr	   r^   Zcategoryr   r   Zfuncnames   &&&&&&  r   _generate_cpy_constZRecompiler._generate_cpy_const&  s	   t333#6>EG G  (!12zz$,d37(BCI412:>F G&?"';."8K[JK]#I&&&*X56IR]]3%7>?Ir   c                s    VP                  4       pV'       d   V P                  '       d   V P                  V4       R # R # r   )r   rR   r   r   r^   r	   r/  r   r   "_generate_cpy_constant_collecttypeZ-Recompiler._generate_cpy_constant_collecttypeD  s1    ##%...!!"% /r   c                sJ    VP                  4       pV P                  W2V4       R # r   )r   r0  r1  r   r   r  Z&Recompiler._generate_cpy_constant_declI  s     ##%  r2r   c                sZ   V P                   '       g(   VP                  4       '       d   \        \        R4      pM=V P                   '       d   \        pM\
        pV P                  V,          p\        WE4      pV P                  R,          P                  \        VRV,          V4      4       R# )rG   r  _cffi_const_%sNr   )
rR   r   rw   OP_CONSTANT_INTZOP_DLOPEN_CONSTZOP_CONSTANTrb   r   rg   r   )r   r^   r	   r   Z
const_kindr8   r  r   r  Z%Recompiler._generate_cpy_constant_ctxM  s    $$$););)=)=_b1G$$$,
(
,JZ4G

8##t-4g>	@r   c                r"  r   )r   r   rN   r   r(  Z)Recompiler._generate_cpy_enum_collecttype]  s    b!r   c                sP    VP                    F  pV P                  R V4       K  	  R# )TN)enumeratorsr0  )r   r^   r	   
enumeratorr   r   r+  Z"Recompiler._generate_cpy_enum_decl`  s     ..J$$T:6 )r   c           
     s"   V P                   V,          p\        \        R
4      pV P                  '       d   VP	                  4        \        VP                  VP                  4       F;  w  rVV P                  R,          P                  \        VRV,          VVR7      4       K=  	  Ve-   RV9  d&   V P                  '       g   RV,          pRV,          pMhVP                  V P                  . 4      p	V P                  P                  V	4      p\        \        V P                  P                  V	R
4      4      ^ 8  4      pRP!                  VP                  4      p
V P                  R	,          P                  \#        VP$                  W7W4      4       R# )rG   r  r3  r   Nr!  z
sizeof(%s)z((%s)-1) <= 0r?   r   r   )rb   rw   OP_ENUMrR   Zcheck_not_partialZzipr5  Z
enumvaluesr   rg   r   Zbuild_baseinttyperP   ZsizeofintZcastrA   rC   r	   )r   r^   r   r8   r   r6  Z	enumvaluer   rE   ZbasetprF   s   &&&        r   r-  ZRecompiler._enum_ctxd  s2   __R(
"%     "%(%G!JJJx '':'7*'Dg'023 &H
 E!1$:O:O:O%'D$u,F))$((B7F88??6*DTXX]]6267!;<F88BNN+

6!!RWWjA	Cr   c                sD    V P                  WP                  4       4       R # r   )r-  r   r   rN   r   _generate_cpy_enum_ctxZ!Recompiler._generate_cpy_enum_ctxy  s    r>>+,r   c                r   r   r   r   rN   r   _generate_cpy_macro_collecttypeZ*Recompiler._generate_cpy_macro_collecttype  r   r   c                sD    VR 8X  d   RpMTpV P                  RW#R7       R# )r  NTr7  )r0  )r   r^   r	   r   r   r   _generate_cpy_macro_declZ#Recompiler._generate_cpy_macro_decl  s&    ;KK  t Er   c           	     s    VR 8X  d&   V P                   '       d   \        RV: R24      hRpMTp\        \        R4      pV P                  R,          P                  \        VRV,          VVR7      4       R# )r  z(cannot use the syntax '...' in '#define z ...' when using the ABI modeNr  r3  r7  r   )rR   r   rw   r4  r   rg   r   )r   r^   r	   r   r      &&&  r   _generate_cpy_macro_ctxZ"Recompiler._generate_cpy_macro_ctx  sp    ;$$$',034 4 KK"-

8##t-4g#.0	1r   c                s    \        V\        P                  4      '       dT   VP                  pVR 8X  d   RV: R2pV P	                  VP
                  RV,          4      p\        P                  ! WC4      pV# )r  z_cffi_array_len(r@   r  )ri   r   r   ro   r   r   )r   r^   Zglobal_namer  r  r=  r   r   ZRecompiler._global_type  sZ    b%//**IIM%9D F'';1FGG8B	r   c                r   r   )r   r   r   rN   r   "_generate_cpy_variable_collecttypeZ-Recompiler._generate_cpy_variable_collecttype  s    d//9:r   c                sn   V P                   pV P                  W4      p\        V\        P                  4      '       d   VP
                  f   VP                  pRpMRpRV: R2pV! RVP                  WPP                  R7      ,           4       V! R4       V! RV: R	V: R
24       V! R4       V! 4        R # )Nr/   &z*_cffi_var_r   r   r  r   z	  return r   r   r   )	r   r   ri   r   r   ro   r   r   r   )r   r^   r	   r   Z	ampersandr   r  r   _generate_cpy_variable_declZ&Recompiler._generate_cpy_variable_decl  s    zzr(b%//**ryy/@BII )-.Yt3F3FGGHS	9d34S	r   c           
     s   V P                  W4      pV P                  V,          pV P                  '       d   \        pM\        pV P
                  R ,          P                  \        VRV,          \        WC4      4      4       R# )r  z_cffi_var_%sN)	r   rb   rR   ZOP_GLOBAL_VARZOP_GLOBAL_VAR_Fr   rg   r   rw   )r   r^   r	   r8   r2   r=  r   _generate_cpy_variable_ctxZ%Recompiler._generate_cpy_variable_ctx  sd    r(__R(
   B B

8##t^d2F24JK	Mr   c                sl    \        V\        P                  4      '       g   Q hV P                  V4       R # r   )ri   r   rn   r   r   rN   r   '_generate_cpy_extern_python_collecttypeZ2Recompiler._generate_cpy_extern_python_collecttype  s)    "e334444b!r   c           	     s   V P                   p\        VP                  \        P                  4      '       d   R pM*RV,          pRVP                  P                  RV4      : R2pV! RV,          4       V! RV P                  : RV: RV: R	24       V! 4        . pR
V,          p\        VP                  4       F/  w  rV	P                  RV,          V4      p
VP                  V
4       K1  	  RP                  V4      pT;'       g    RpV: RV: R2pVP                  R8X  d
   RV,           pR p\        \        VP                  4      ^,          ^4      pV! VP                  4      '       d   \        V^4      p\        VP                  \        P                  4      '       d@   RVP                  P                  R4      VVP                  P                  R4      V3,          pV! V: VP                  P                  V4      : 24       V! R4       V! RV,          4       V! R4       \        VP                  4       F  w  rRV,          p
\        V	\        P                  4      '       g   V! V	4      '       d    RV
,           p
\        P                  ! V	4      p	V! RV	P                  R4      V^,          V
3,          4       K  	  V! RV,          4       \        VP                  \        P                  4      '       g'   V! RVP                  P                  R4      : R24       V! R4       V! 4        V ;P                   ^,          un        R# )r  r  z(int)sizeof(r/   r@   z3static struct _cffi_externpy_s _cffi_externpy__%s =r   r   r+   z	, 0, 0 };r   z a%dr   r   r   	__stdcallz_cffi_stdcall c                 sd    \        V \        P                  4      ;'       d    V P                  R 8H  # )r   )ri   r   r  r	   r]   r   r   may_need_128_bitsZ9Recompiler._extern_python_decl.<locals>.may_need_128_bits  s-    r5#6#67 - -GG},.r   z!sizeof(%s) > %d ? sizeof(%s) : %dr   z  char a[%s];z  char *p = a;za%dr@  z  *(%s)(p + %d) = %s;r   z,  _cffi_call_python(&_cffi_externpy__%s, p);z  return *(z)p;r   N)r   ri   r  r   rj   r   rQ   rt   rh   rg   rA   r  rV   r,   rr   rl   r   )r   r^   r	   Ztag_and_spacer   Zsize_of_resultr   r	  rz   r   r  r
  r  rE  Z	size_of_as   &&&&           r   _extern_python_declZRecompiler._extern_python_decl  s   zzbii00 N$t+G		$$R14NBTIJdN4 	5	"T) )GA//&1*g6CS! * 9-'116)-~>66[ !14F!F	. BGGQ*	RYY''Ir*Ibii!4!455;		$$R()		$$R()?5 5I 	}bii&:&:;M&NOPS	_y() )GA!)C4!4!455%d++Ci((.(DOOC,@!A#s+KKL * 	;dBC"))U^^44ryy';';C'@BCS	ar   c                *    V P                  WR 4       R# )r   NrF  r   rN   r    _generate_cpy_extern_python_declZ+Recompiler._generate_cpy_extern_python_decl  s      95r   c                rG  )zCFFI_DLLEXPORT NrH  r   rN   r   #_generate_cpy_dllexport_python_declZ.Recompiler._generate_cpy_dllexport_python_decl
  s      +<=r   c                rG  )r/   NrH  r   rN   r   '_generate_cpy_extern_python_plus_c_declZ2Recompiler._generate_cpy_extern_python_plus_c_decl  s      2.r   c                s(   V P                   '       d   \        R 4      hVP                  '       d   \        R4      hV P                  V,          p\        \        V4      pV P                  R,          P                  \        VRV,          WB4      4       R# )z,cannot use 'extern "Python"' in the ABI modez$a vararg function is extern "Python"r  z&_cffi_externpy__%sN)
rR   r   r   r.   rb   rw   ZOP_EXTERN_PYTHONr   rg   r   )r   r^   r	   r8   r   r=  r   _generate_cpy_extern_python_ctxZ*Recompiler._generate_cpy_extern_python_ctx  sz       #@B B;;;%&NOO__R(
):6

8##t2T97I	Kr   c                sF   V P                   pV! R 4       \        V\        4      '       g   VP                  R4      pMVP	                  R4        VP	                  R4       VP                  R4       F  pTp\        R4      \        J d   \        \        V4      pM\        V4      ^R
 pV! RV,           P                  4       4       RpV F.  p\        V4      ^L8  d   V! V4       RpVRV3,          ,          pK0  	  V! V4       K  	  R	#   \
         d    RT,           p Li ; i)z=// # NB. this is not a string because of a size limit in MSVCzutf-8asciis   # -*- encoding: utf8 -*-
Tz//z// r/   z%d,Nr   )r   ri   ZbytesencodeZdecodeZUnicodeDecodeErrorZ
splitlinesr   ZmapZordrM  Zrstripr,   )r   sr   Zliner;   Zprinted_lineZcs   &&     r   r   Z)Recompiler._print_string_literal_in_array  s   zzLM!U##!AHHW	2HHW LL&DGDzU"3~  .2.%'/))+,L|$*&#%L,	 
  ' " 	2-1A	2s   D	 	D D c                sH    \        \        \        4      V P                  V&   R # r   )rw   OP_PRIMITIVEZ	PRIM_VOIDrf   r   r^   r   rN   r   _emit_bytecode_VoidTypeZ"Recompiler._emit_bytecode_VoidType=  s    !'i!@r   c                sn    \         VP                  ,          p\        \        V4      V P                  V&   R # r   )ZPRIMITIVE_TO_INDEXr	   rw   rP  rf   )r   r^   r   rK   r   r   _emit_bytecode_PrimitiveTypeZ'Recompiler._emit_bytecode_PrimitiveType@  s%    '0
!'j!Ar   c                s    R VP                   : RVP                   : RVP                   : R2p\        \        V4      V P                  V&   R# )z_cffi_prim_int(sizeof(z), (
           ((z)-1) | 0 /* check that z' is an integer type */
         ) <= 0)Nr	   rw   rP  rf   r   r^   r   rO  r   r   !_emit_bytecode_UnknownIntegerTypeZ,Recompiler._emit_bytecode_UnknownIntegerTypeD  s5     $&77BGGRWW> "(a!8r   c                s~    R VP                   : RVP                   : R2p\        \        V4      V P                  V&   R# )z_cffi_prim_float(sizeof(z) *
           (((z6)1) / 2) * 2 /* integer => 0, float => 1 */
         )NrT  rU  r   r   _emit_bytecode_UnknownFloatTypeZ*Recompiler._emit_bytecode_UnknownFloatTypeJ  s/      WWbgg/ "(a!8r   c                sx   \        \        V P                  VP                  ,          4      V P                  V&   V^,          pVP
                   Ft  pV P                  V,          pW$8w  dP   \        V\        P                  4      '       d   V P                  W24       M\        \        V4      V P                  V&   V^,          pKv  	  \        VP                  4      pVP                  e5   VP                  R8X  d   V^,          pM\        RVP                  : 24      h\        \        V4      V P                  V&   R# )rG   NrD  zabi=)rw   ZOP_FUNCTIONrb   r  rf   rh   ri   r   r  rS  r3   r9  r   r  r.   ZOP_FUNCTION_END)r   r^   r   ry   Z	realindexr9   r  r   _emit_bytecode_RawFunctionTypeZ)Recompiler._emit_bytecode_RawFunctionTypeP  s    !'T__RYY5O!P
77C,I!c5#6#67755cA-3GY-GDOOE*QJE  BKK 66vv$
)bff*>??!'!?r   c                sv    \        \        V P                  VP                  ,          4      V P                  V&   R # r   )rw   
OP_POINTERrb   r   rf   rQ  rN   r   _emit_bytecode_PointerTypeZ%Recompiler._emit_bytecode_PointerTypec  s$    !'
DOOBII4N!Or   c                s    VP                  4       p\        \        V P                  V,          4      V P                  V&   R # r   )r   rw   rY  rb   rf   )r   r^   r   Zrawr   r   _emit_bytecode_FunctionPtrTypeZ)Recompiler._emit_bytecode_FunctionPtrTypei  s.      "!'
DOOC4H!Ir   c                s   V P                   VP                  ,          pVP                  f    \        \        V4      V P
                  V&   R # VP                  R8X  d*   \        R\        V4      P                  RR4      : R24      hV P
                  V^,           ,          R8X  g   Q h\        \        V4      V P
                  V&   \        R \        VP                  4      4      V P
                  V^,           &   R # )Nr  ztype z/*...*/zb badly placed: the '...' array length can only be used on global arrays or on fields of structuresrZ   )
rb   r   ro   rw   ZOP_OPEN_ARRAYrf   r   re   r   ZOP_ARRAY)r   r^   r   Z
item_indexr   r   _emit_bytecode_ArrayTypeZ#Recompiler._emit_bytecode_ArrayTypem  s    __RWW-
99%+M:%FDOOE"YY%# GOOIu589 9
 ??519-666%+Hj%ADOOE")/c"))n)EDOOEAI&r   c                f    V P                   V,          p\        \        V4      V P                  V&   R # r   )rp   rw   ZOP_STRUCT_UNIONrf   )r   r^   r   Zstruct_indexr   r   _emit_bytecode_StructTypeZ$Recompiler._emit_bytecode_StructType{  s'    **2.!'!Fr   c                r]  r   )rq   rw   r8  rf   )r   r^   r   Z
enum_indexr   r   _emit_bytecode_EnumTypeZ"Recompiler._emit_bytecode_EnumType  s$    [[_
!'!<r   )r   rq   r   r   r   r   rp   rb   rT   rf   rP   rQ   rR   F)r  r   r   r   r   )r/   r   )NZconstN)Yr   r   r   r   r   r   rX   r|   r   r   rc   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#  Z_generate_cpy_union_collecttyper$  r&  Z_generate_cpy_union_declr'  Z_generate_cpy_union_ctxr)  r,  r.  r0  r2  r  r  r(  r+  r-  r:  r;  r<  r>  r   r?  rA  rB  rC  Z*_generate_cpy_dllexport_python_collecttypeZ._generate_cpy_extern_python_plus_c_collecttyperF  rI  rJ  rK  rL  Z"_generate_cpy_dllexport_python_ctxZ&_generate_cpy_extern_python_plus_c_ctxr   rR  rS  rV  rW  rX  rZ  Z_emit_bytecode_ConstPointerTypeZ_emit_bytecode_NamedPointerTyper[  r\  r^  Z_emit_bytecode_UnionTyper_  r    r!   r"   r$   r   rO   rO   ~   s    M%081t	<-&& HI,>#2kZ"0h%+(ZK*F=<F+&
`D2,
2 DT)lO7.%&F#&7866);:<&
3@ "7C*-F1";.M"
 ...44 l6>/	K &&&,<AB99@&P 'A#&@#JFG  9= =r   rO   c                   s2   a a ] tR tRt oV 3R ltRtVtV ;t# )NativeIOi  c                s|   < \        V\        4      '       d   VP                  R 4      p\        \        V `  V4       R# )rM  N)ri   ZunicoderN  Zsuperra  r   )r   rO  rv      &&r   r   ZNativeIO.write  s-    !W%%HHW%(D'*r   r   )r   r   r   r   r   r    r!   Z__classcell__)rv   r#   s   @@r   ra  ra    s     	+ 	+r   ra  c                 s    \        V R 4      # )r   )Zhasattr)Z	maybefiler   r   _is_file_likerc    s    9g&&r   c                 s   V'       d   \        R V: 24       \        WVRJ R7      pVP                  4        VP                  4        \	        V4      '       d   VP                  W24       R# \        4       pVP                  Wb4       VP                  4       p \        VR4      ;_uu_ 4       pVP                  \        V4      ^,           4      V8w  d   \        h RRR4       V'       d   \        R4       R#   + '       g   i     L%; i  \         d    RT\        P                  ! 4       3,          p	\        T	R4      ;_uu_ 4       pTP                  T4       RRR4       M  + '       g   i     M; i \        P                  ! Y4       M=  \          d0    \        P"                  ! T4       \        P                  ! Y4        Mi ; i R# i ; i)	zgenerating N)rR   Tr   z(already up-to-date)Fz%s.~%dZw)printrO   r|   r   rc  r   ra  Zgetvaluer   Zreadr,   ZIOErrorr   Zgetpidr   ZrenameOSErrorZunlink)
rP   rQ   r   Ztarget_fileverboseZ
recompilerr   ZoutputZf1Ztmp_files
   &&&&&     r   _make_c_or_py_sourcerg    s[   ./C.6$.>AJ!!#""$[!!$$[;
A  -ZZ\F+s##rwws6{Q'61 2 $ () $#  	{BIIK88(C  BHHV !   	-IIh, 	-IIk"IIh,	- 	sl   D	 +-C6D	 )D	 6D	D	 	=GE!	G!E1,G5FG7GGGGGc                 s(    Vf   Q h\        WW#V4      # r   rg  )rP   rQ   r   Ztarget_c_filerf  r   r   make_c_sourceri    s"    ( ') )r   c                 s    \        WR VV4      # r   rh  )rP   rQ   Ztarget_py_filerf  rU   r   make_py_sourcerj    s    $ ') )r   c                 s,   VP                  R 4      p \        P                  ! \        P                  P                  ! V .VRR O5!  4       VR;;,          V,          uu&   \        P                  P                  ! V .VO5!  V3#   \
         d     LFi ; i)r   Nr   )r   r   Zmakedirsr   rA   re  )Z	outputdirZmodnameZ	extensionpartsr   r   _modname_to_filerl    sz    MM#E
BGGLL8U3BZ89 
"II77<<	*E*E11  s   9B BBc                 sZ    \        W4      pV P                  WV34       \        WV4       V# r   )ru   rg   setattr)	patchlistclsr	   Znew_methZoldr   r   _patch_methrp    s.    
#
Cc%&Cx Jr   c                 sH    \        V 4       F  w  rp\        WV4       K  	  R # r   )Zreversedrm  )rn  ro  r	   Zold_methrB   r   _unpatch_methsrq    s     '	288$  3r   c                 s   a \         P                  R 8X  d   ^ RIHp Ve   \	        WRR 4       \         P                  R8X  d   ^ RIHp V3R lp\	        WRV4      oR# R# )	r   )MSVCCompilerNZ_remove_visual_c_refc                 s    V# r   r   )r   Zmanifest_filerW   r   r_   Z&_patch_for_embedding.<locals>.<lambda>  s    Mr   darwin)	CCompilerc                 s   < R V P                   9   dE   \        V P                   4      V n         V P                   P                  R 4      pRV P                   V&   S! V .VO5/ VB # )z-bundlez-dynamiclib)Z	linker_sor   r   )r   rh   kwdsrz   old_link_shared_objects   &*, r   my_link_shared_objectZ3_patch_for_embedding.<locals>.my_link_shared_object  sV    DNN*!%dnn!5NN((3$1q!)$>>>>r   Zlink_shared_object)sysplatformcffi._shimmed_dist_utilsrr  rp  rt  )rn  rr  rt  rw  rv  s   &   @r   _patch_for_embeddingr{    s\    
||w 	:#	1GAC ||x6	? "-Y-A-B"D  r   c                 s   a ^ RI Hp SP                  R4      '       dM   SRR o\        P                  R8X  d   SR,          oM(\        P                  R8X  d   SR,          oM	SR,          o\        WR	V3R
 l4       R# )r    )	build_extz.*Nr   z.dllrs  z.dylibz.soZget_ext_filenamec                 s   < S# r   r   )r   Zext_nametargetrb  r   r_   Z#_patch_for_target.<locals>.<lambda>  s    vr   r  )rz  r|  Zendswithrx  ry  rp  )rn  r}  r|  s   &f r   _patch_for_targetr~    sg    2 t<<7"fF\\X%hFeOF	&8-/r   c                 s   \        V\        4      '       g   VP                  R 4      pV P                  '       d   V P	                  V4       VEe   V'       d   \        V4      '       d   \        R4      hV P                  RJpV'       d   V P                  V4       Vf@   \        W1V4      w  r^V'       d   V.V,           p\        P                  P                  ! V!  pMTpV	f   V'       d   RV,          p	MRp	V'       d   \        P                  ! W3/ VB pMRp\        WW%VR7      pV'       d   . p\        P                   ! 4       p V'       d   \#        V4       V	R8w  d   \%        VV	4       V'       d<   VR8X  d   RpMRp\'        V: R	\        P                  P)                  V4      : 24       \        P*                  ! V4       \        P,                  ! RVW4      p\        P*                  ! V4       \/        V4       V# VV3# Vf   \        W1R
4      w  pp\1        WVVR7      pV'       d   V# RV3#   \        P*                  ! T4       \/        T4       i ; i)rM  NzGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r   )rf  r   zthe current directory isz setting the current directory tor*   z.py)ri   re   rN  Z_windows_unicodeZ_apply_windows_unicoderc  r   r   Z_apply_embedding_fixrl  r   r   rA   r   Zget_extensionri  Zgetcwdr{  r~  rd  ZabspathZchdirZcompilerq  rj  )rP   rQ   r   ZtmpdirZcall_c_compilerZc_fileZsource_extensionZextradirZcompiler_verboser}  ZdebugZuses_ffiplatformru  Z	embeddingrk  Z
ext_c_fileZextZupdatedrn  ZcwdZmsgZoutputfilenamer   s   &&&&&&&&&&&&,          r   	recompiler    s    k3''!((1
""4(}V44 8 9 9^^4/	$$T*>,V-=?MF!
U*u-JJ>+-++JLtLCC((8:I))+C*(3S=%i8#}8@S"''//&*ABC !,!4!4S#5E"N y)!!<>(eDIFA 6)9;M=  y)s   H5 %H5 6A)H5 5#I)   r    )r  i   )r  r`  )	r   TNz.cNrG   NNT)$Zior   rx  Z	sysconfigr/   r   r   Zerrorr   Zcffi_opcoderS   r   r   ry  Zversion_infoZget_config_varr   r   r%   r7   rC   rL   rO   ZStringIOra  ZBytesIOrc  rg  ri  rj  rl  rp  rq  r{  r~  r  r   r   r   <module>r     s!       $   LLG+ . .s/?/?&/H . .##v-C C //0ABB 1 1 ) )8# #:? ?0	K 	KD= D=N( t{{H+2:: +'>)
)2%D./"C!r   