+
    i                     6   ^ 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(  win32Py_GIL_DISABLEDc                   6   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   s   &&&&&&V/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/cffi/recompiler.py__init__GlobalExpr.__init__   s    		&    c           	         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   s   &r   r   GlobalExpr.as_c_expr   s0    IIt||T\\%;%;%=tyyJ 	Jr   c                r    R V P                   P                  4       V P                  V P                  3,          # )z
b'%s%s',%d)r   as_python_bytesr   r   r   s   &r   as_python_expr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__s   @r   r
   r
      s     'J1 1r   r
   c                   8   a  ] tR t^t o R tR tR tR tRtV t	R# )	FieldExprc                B    Wn         W n        W0n        W@n        WPn        R # r   )r   field_offset
field_sizefbitsizefield_type_op)r   r   r.   r/   r0   r1   s   &&&&&&r   r   FieldExpr.__init__   s    	($ *r   c                    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/   r1   r   )r   spacess   & r   r   FieldExpr.as_c_expr&   sZ    s499~%%)YY0A0AB%+T__=>%+T-?-?-I-I-KLM 	Nr   c                    \         hr   )NotImplementedErrorr   s   &r   r    FieldExpr.as_python_expr,   s    !!r   c                   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'')	r1   opOP_NOOPOP_BITFIELDformat_four_bytesr0   r:   r   r   )r   	size_exprs   & r   as_field_python_exprFieldExpr.as_field_python_expr/   sj      G+I""k1)$--8I%%"00@@B'"ii) 	)r   )r0   r.   r/   r1   r   N)
r#   r$   r%   r&   r   r   r    rE   r'   r(   r)   s   @r   r,   r,      s     +N"	) 	)r   r,   c                   2   a  ] tR t^:t o R tR tR tRtV tR# )StructUnionExprc	                f    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   rJ   rK   r   rL   rM   rN   rO   s	   &&&&&&&&&r   r   StructUnionExpr.__init__;   s+    	$
	"!2 r   c                x   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   rJ   rK   r   rL   rN   r6   rO   rM   r   s   &r   r   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                   \        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'',,))	evalrK   G_FLAGSrO   rE   rC   rJ   r   join)r   rK   c_fieldfields_exprs   &   r   r    StructUnionExpr.as_python_exprM   sy    TZZ)&*mm5&37 335&3 	 5 doo.e$IIHH[!	# 	#5s   B
)rL   rO   rM   rN   rK   r   r   rJ   Nr"   r)   s   @r   rH   rH   :   s     	!# #r   rH   c                   2   a  ] tR t^Wt o R tR tR tRtV tR# )EnumExprc                B    Wn         W n        W0n        W@n        WPn        R # r   r   rJ   r   signedallenums)r   r   rJ   r   ra   rb   s   &&&&&&r   r   EnumExpr.__init__X   s    	$	 r   c                    R V P                   V P                  V P                  V P                  V P                  3,          # )z1  { "%s", %d, _cffi_prim_int(%s, %s),
    "%s" },r`   r   s   &r   r   EnumExpr.as_c_expr_   s9    !%DOO!%DKK!HH 	Ir   c                "   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# )   r>   z\x00r?   )rg   r   )rg   rg   )   r   )rh   rg   )   r   )ri   rg   )   r   )rj   rg   )
PRIM_UINT8	PRIM_INT8PRIM_UINT16
PRIM_INT16PRIM_UINT32
PRIM_INT32PRIM_UINT64
PRIM_INT64r   ra   rC   rJ   r   rb   )r   
prim_indexs   & r   r    EnumExpr.as_python_exprd   sq    J)K*K*K*	
 ii$&
 &7t%G%6z%B%)YY? 	?r   )rb   r   ra   r   rJ   Nr"   r)   s   @r   r^   r^   W   s     !I
	? 	?r   r^   c                   2   a  ] tR t^ot o R tR tR tRtV tR# )TypenameExprc                    Wn         W n        R # r   r   rJ   )r   r   rJ   s   &&&r   r   TypenameExpr.__init__p   s    	$r   c                @    R V P                   V P                  3,          # )z  { "%s", %d },rx   r   s   &r   r   TypenameExpr.as_c_exprt   s     DIIt#???r   c                P    R \        V P                  4      : V P                  : R2# )r>   r?   )rC   rJ   r   r   s   &r   r    TypenameExpr.as_python_exprw   s    -doo>		JJr   rx   Nr"   r)   s   @r   rv   rv   o   s     %@K Kr   rv   c                     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                @    Wn         W n        W0n        \        V n        R # r   )ffimodule_nametarget_is_pythonVERSION_BASE_version)r   r   r   r   s   &&&&r   r   Recompiler.__init__   s    & 0$r   c                <    \        V P                  V4      V n        R # r   )maxr   )r   vers   &&r   needs_versionRecompiler.needs_version   s    DMM3/r   c           
        / 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# )collecttypekeyNENDLENc                     V P                   # r   r   tps   &r   <lambda>/Recompiler.collect_type_table.<locals>.<lambda>       RWWr   c                     V P                   # r   r   r   s   &r   r   r      r   r   _emit_bytecode_)
_typesdict	_generatesortedstr
cffi_typesis_raw_functionr6   appendargs
isinstancer   VoidTypeBasePrimitiveTypePointerTypeStructOrUnionOrEnumFunctionPtrTypeis_array_typelengthvalues_struct_unions_enumsStructOrUnionEnumType	enumerategetattr	__class__r#   CffiOptuple)r   	all_declsr   tp1imethodr@   s   &      r   collect_type_table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                F    V P                   '       * pVP                  V4      # r   )r   
enumfields)r   r   expand_anonymous_struct_unions   && r   _enum_fieldsRecompiler._enum_fields   s#     -1,A,A(A%}}:;;r   c                   \        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   )r   r   BaseTypeByIdentityr   _do_collect_typer   r   as_raw_functionr   fldtypesr   _parser_included_declarationsr   _field_type
_get_items)r   r   xname1r   _s   &&    r   r   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                   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)r4   _generate_cpy_r   z"not implemented in recompile(): %rN)r   r   _declarationsitemsr   splitr   AttributeErrorr   _current_quals	Exceptionr   attach_exception_info)
r   	step_namelstr   r   qualskindrealnamer   es
   &&        r   r   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                   / 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# )ctxfieldc                     V P                   # r   r   )entrys   &r   r   0Recompiler.collect_step_tables.<locals>.<lambda>  s    5::r   r   struct_unionenumN)_lsts	ALL_STEPSset_seen_struct_unionsr   _add_missing_struct_unionssortr   r   r   r6   r   r   )r   r   r   r   r   s   &    r   collect_step_tables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                J    V P                   P                  VR ,           4       R# )
N)_fwrite)r   whats   &&r   _prntRecompiler._prnt  s    dTk"r   c                    V P                   '       d   Ve   Q hV P                  V4       R # Vf   Q hV P                  W4       R # r   )r   write_py_source_to_fwrite_c_source_to_f)r   fpreambles   &&&r   write_source_to_fRecompiler.write_source_to_f  sB       ###%%a('''$$Q1r   c                    \        \        P                  P                  \        P                  P	                  \
        4      V4      R 4      pVP                  4       pVP                  4        V# )r)openospathrY   dirname__file__	readlinesclose)r   filenamegliness   &&  r   _rel_readlinesRecompiler._rel_readlines!  sC    bggooh7BCH		r   c           	     (   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  ""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= */PyMODINIT_FUNC_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#  endifPyInit_(void)z5  return _cffi_init("%s", 0x%x, &_cffi_type_context);initz.  _cffi_init("%s", 0x%x, &_cffi_type_context);z#  pragma GCC visibility pop) r   r   r   
_embeddingUSE_LIMITED_APIr  indexrY   r   r   _print_string_literal_in_arrayr   VERSION_EMBEDDEDdictr   r   r   r   _get_c_namer   r   _seen_constantsr   r   r   r6   _included_ffis_assigned_sourcer   r   _num_externpyr   )r   r   r   prntr  r   base_module_namer   typeindex2typer@   rM   numsr   r   r   ffi_to_includeincluded_module_nameincluded_sourcerK   s   &&&                r   r   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                J   \        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 )r>   r?   r=   (rU   rV   )	r   r   listr   _to_pyr6   r   rY   r    )r   r   itemreps   &&  r   r2  Recompiler._to_py  s    a>!a$''123;;t$C33x1}

2 XXc],,!!	 4s   B c           
        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('rT   z    _version = 0x%x,z    _types = r=   rU   r   z    _zs = z    _includes = (r   z_ffi%dz,),rV    )r   r   r6   r   r$  ranger%  r   r   r   r   r   r   r   r2  rY   r!  r   r   r   r   )r   r   r'  num_includesr   r+  r,  r-  r@   	types_lstr   r)  r   r   s   &&            r   r   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                (    V P                   V,          # r   )r   )r   types   &&r   _gettypenumRecompiler._gettypenum  s    t$$r   c           
        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=   _Bool_cffi_to_c_intz, %sr0  z)_cffi_to_c_doublez)_cffi_to_c_r4   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)NULL  z = );z  if (z == (rV   z && PyErr_Occurred())char16_tchar32_t)r   r   r   is_complex_typeis_integer_typer   UnknownFloatType
get_c_namereplacer   VERSION_CHAR16CHAR32r   "_convert_funcarg_to_c_ptr_or_arrayr   r   r>  r   r:   )	r   r   fromvartovarerrcodeextraarg	convertercnameerrvalues	   &&&&&    r   _convert_funcarg_to_c 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                    \        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)r   r   r   add)r   r   	localvars	freeliness   &&&&r   _extra_local_variables!Recompiler._extra_local_variablesC  sG    b%++,,MM/0MMIJMM J K -r   c                   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>  rL  )r   r   rP  rQ  rR  s   &&&&&r   rO  -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                   \        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)rA  z_cffi_from_c_int(r   rV   z_cffi_from_c_double(long doubler4   r   _cffi_from_c_r0  z/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r?   z' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d))rF  )r   r   r   rJ  r   rK  rI  rM  r   rN  r>  r   r   	ArrayTyper3  r   fldnames	TypeErrorr"  r   r:   )r   r   varcontextrU  s   &&&& r   _convert_expr_from_c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                0    V P                  VR V: R24      # )z(*(z *)0))_global_typer   r   r   s   &&&r   _typedef_typeRecompiler._typedef_type{  s      T%;<<r   c                F    V P                  V P                  W4      4       R # r   )r   rn  rm  s   &&&r   !_generate_cpy_typedef_collecttype,Recompiler._generate_cpy_typedef_collecttype~  s    d00:;r   c                    R # r   r7  rm  s   &&&r   _generate_cpy_typedef_decl%Recompiler._generate_cpy_typedef_decl      r   c                    V P                   V,          pV P                  R ,          P                  \        W#4      4       R# )typenameN)r   r   r   rv   )r   r   r   rJ   s   &&& r   _typedef_ctxRecompiler._typedef_ctx  s,    __R(


:%%l4&DEr   c                j   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# )originNunknown_type)
approxname)r~  	named_ptr)	rn  ry  r   _struct_ctxr   r   r   NamedPointerTypetotyperm  s   &&&r   _generate_cpy_typedef_ctx$Recompiler._generate_cpy_typedef_ctx  s    )"#2x&.8RT:E2233RYY		277')  + 4r   c                    V P                  VP                  4       4       VP                  '       d(   V P                  '       g   V P                  V4       R # R # R # r   )r   r   ellipsisr   rm  s   &&&r   "_generate_cpy_function_collecttype-Recompiler._generate_cpy_function_collecttype  sB    b0023;;;t444!!"%  5;r   c                   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 )?Nnoargarg0r   argument of %sz x%dzx%dr   voidr4   r=   _cffi_d_r0  rV   static r  zreturn rD  rE  r  z#ifndef PYPY_VERSIONzstatic PyObject *_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                     \        V \        P                  4      ;'       g3    \        V \        P                  4      ;'       d    V P	                  4       # r   )r   r   r   PrimitiveTyperI  )r=  s   &r   need_indirection@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  )r   r   r   r   r  _generate_cpy_constant_declr   r6   r   r   r   rL  rY   abir  r   r   r]  r   r8  rW  ri  insert	void_type)r   r   r   r'  numargsargname	argumentscall_argumentsrh  r   r=  repr_argumentsr  name_and_argumentsresult_codeargr[  r\  r  result_declrngfreeliner  
differenceindirection	tp_results   &&&                       r   _generate_cpy_function_decl&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           
        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  r   _generate_cpy_constant_ctxr   r   r6   r   OP_DLOPEN_FUNCOP_CPYTHON_BLTN_NOP_CPYTHON_BLTN_OOP_CPYTHON_BLTN_Vr   r   r
   r   )r   r   r   rJ   r  	meth_kinds   &&&   r   _generate_cpy_function_ctx%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                   \        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)->rV   %s[0])r   r   rd  r   rL  r   r3  )r   	tp_struct
field_nametp_fieldactual_lengthptr_struct_nametp_items   &&&&   r   r   Recompiler._field_typeQ  ss    h00$OOM%"+"6"6s";#Z!1&&y'J2F'/}}6Gw>Hr   c                    V P                  V4       V P                  '       d+   VP                  4        F  pV P                  V4       K  	  R # R # r   )r   r   anonymous_struct_fields_struct_collecttype)r   r   fldtypes   && r   r  Recompiler._struct_collecttype]  sB    b!   557((1 8 !r   c           
        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)N_cffi_checkfld__CFFI_UNUSED_FNzstatic void r0  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   rJ  r   r   rd  r   r3  rL  r   r   )r   r   rU  r~  r'  checkfuncnamefnameftyper0   fqualr   s   &&&&       r   _struct_decl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                j   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 # )'N_CFFI_F_UNION_CFFI_F_OPAQUEopaque_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)_CFFI_F_PACKED_CFFI_F_EXTERNALexternal|0zfield 'r
  r?   z%d /* bits */z
(size_t)-1z	sizeof(((r   r  rV   z(size_t)(((char *)&((z)4096)->z) - (char *)4096)z	offsetof(r=   r   r   z
(size_t)-2unnamedz	sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)r   r  )!r   r   r   	UnionTyper   r   r   r   r   partialanyr  packedr:   rY   r1  r   r   _check_not_opaquer   rA   rB   rd  r   rL  r,   r   r6   r   extendrH   r   rZ  )r   r   rU  r~  r  rJ   reason_for_not_expandingrK   rO   r   fldnamer  r0   r  r@   r   offsetrN   alignrM   s   &&&&&               r   r  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                    \        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()))r   r   rd  r3  r   r   rf  )r   r   locations   &&&r   r  Recompiler._check_not_opaque  sX    U__--Bb%--..2;;3FBXMO O 4G.r   c                Z   \        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                     V ^,          # )rg   r7  )tp_orders   &r   r   7Recompiler._add_missing_struct_unions.<locals>.<lambda>  s    hqkr   r   zinternal inconsistency: z* is partial but was not seen at this point$:rg   NN_IO_FILEFILEN)r1  r   r   r   r   r  r:   r   
startswithisdigit	forcenamery  r  )r   r   r   orderr~  s   &    r   r   %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  rm  s   &&&r    _generate_cpy_struct_collecttype+Recompiler._generate_cpy_struct_collecttype  s      $r   c                n    VP                  R 4      pRV9   d   W"P                  RR4      3# VRV,           3# )r=   r4   r   )rL  rM  )r   r   rU  s   && r   _struct_names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  rm  s   &&&r   _generate_cpy_struct_decl$Recompiler._generate_cpy_struct_decl  s     "6t11"56r   c                L    V P                   ! V.V P                  V4      O5!   R # r   )r  r  rm  s   &&&r   _generate_cpy_struct_ctx#Recompiler._generate_cpy_struct_ctx	  s     5d0045r   c                    \        V\        P                  4      '       d   V P                  W4       R # V P	                  V4       R # r   )r   r   r   _generate_cpy_enum_collecttyper  rm  s   &&&r   #_generate_cpy_anonymous_collecttype.Recompiler._generate_cpy_anonymous_collecttype  s/    b%..))//9$$R(r   c                    \        V\        P                  4      '       d   V P                  V4       R# V P	                  WR V,           4       R# typedef_N)r   r   r   _generate_cpy_enum_declr  rm  s   &&&r   _generate_cpy_anonymous_decl'Recompiler._generate_cpy_anonymous_decl  s6    b%..))((,b
T(9:r   c                    \        V\        P                  4      '       d   V P                  W4       R# V P	                  WR V,           4       R# r  )r   r   r   	_enum_ctxr  rm  s   &&&r   _generate_cpy_anonymous_ctx&Recompiler._generate_cpy_anonymous_ctx  s4    b%..))NN2$RzD'89r   c                >   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 'r?   _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   rZ  r   rL  )r   is_intr   r   categoryr   r'  funcnames   &&&&&&  r   _generate_cpy_const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                    VP                  4       pV'       d   V P                  '       d   V P                  V4       R # R # r   )rJ  r   r   r   r   r   r  s   &&& r   "_generate_cpy_constant_collecttype-Recompiler._generate_cpy_constant_collecttypeD  s1    ##%...!!"% /r   c                J    VP                  4       pV P                  W2V4       R # r   )rJ  r  r  s   &&& r   r  &Recompiler._generate_cpy_constant_declI  s     ##%  r2r   c                Z   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  )
r   rJ  r   OP_CONSTANT_INTOP_DLOPEN_CONSTOP_CONSTANTr   r   r   r
   )r   r   r   r   
const_kindrJ   s   &&&   r   r  %Recompiler._generate_cpy_constant_ctxM  s    $$$););)=)=_b1G$$$,
(
,JZ4G

8##t-4g>	@r   c                (    V P                  V4       R # r   )r   rm  s   &&&r   r  )Recompiler._generate_cpy_enum_collecttype]  s    b!r   c                P    VP                    F  pV P                  R V4       K  	  R# )TN)enumeratorsr  )r   r   r   
enumerators   &&& r   r
  "Recompiler._generate_cpy_enum_decl`  s     ..J$$T:6 )r   c           
     "   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  r  r   Nr  z
sizeof(%s)z((%s)-1) <= 0rU   r   r  )r   r   OP_ENUMr   check_not_partialzipr(  
enumvaluesr   r   r
   build_baseinttyper   sizeofintcastrY   r^   r   )r   r   rU  rJ   r   r)  	enumvaluer   ra   basetprb   s   &&&        r   r  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                D    V P                  WP                  4       4       R # r   )r  r"  rm  s   &&&r   _generate_cpy_enum_ctx!Recompiler._generate_cpy_enum_ctxy  s    r>>+,r   c                    R # r   r7  rm  s   &&&r   _generate_cpy_macro_collecttype*Recompiler._generate_cpy_macro_collecttype  rv  r   c                D    VR 8X  d   RpMTpV P                  RW#R7       R# )r  NTr,  )r  )r   r   r   r   s   &&& r   _generate_cpy_macro_decl#Recompiler._generate_cpy_macro_decl  s&    ;KK  t Er   c           	         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  r  r,  r  )r   r   r   r   r   r   r
   )r   r   r   r   r   s   &&&  r   _generate_cpy_macro_ctx"Recompiler._generate_cpy_macro_ctx  sp    ;$$$',034 4 KK"-

8##t-4g#.0	1r   c                    \        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(rV   r  )r   r   rd  r   rl  r3  )r   r   global_namer  r  s   &&&  r   rl  Recompiler._global_type  sZ    b%//**IIM%9D F'';1FGG8B	r   c                F    V P                  V P                  W4      4       R # r   )r   rl  rm  s   &&&r   "_generate_cpy_variable_collecttype-Recompiler._generate_cpy_variable_collecttype  s    d//9:r   c                n   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 r0  rE  r  )	r   rl  r   r   rd  r   r3  rL  r   )r   r   r   r'  	ampersandr  s   &&&   r   _generate_cpy_variable_decl&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           
        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)	rl  r   r   OP_GLOBAL_VAROP_GLOBAL_VAR_Fr   r   r
   r   )r   r   r   rJ   r@   s   &&&  r   _generate_cpy_variable_ctx%Recompiler._generate_cpy_variable_ctx  sd    r(__R(
   B B

8##t^d2F24JK	Mr   c                l    \        V\        P                  4      '       g   Q hV P                  V4       R # r   )r   r   r   r   rm  s   &&&r   '_generate_cpy_extern_python_collecttype2Recompiler._generate_cpy_extern_python_collecttype  s)    "e334444b!r   c           	        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=   rV   z3static struct _cffi_externpy_s _cffi_externpy__%s =r   r
  r5   z	, 0, 0 };r  z a%dr   r  r0  	__stdcallz_cffi_stdcall c                 d    \        V \        P                  4      ;'       d    V P                  R 8H  # )rb  )r   r   r  r   r   s   &r   may_need_128_bits9Recompiler._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%drK  z  *(%s)(p + %d) = %s;r   z,  _cffi_call_python(&_cffi_externpy__%s, p);z  return *(z)p;r  N)r   r   r  r   r   rL  r   r   r   r   rY   r  r   r6   r   r   r&  )r   r   r   tag_and_spacer'  size_of_resultrh  r  r   r=  r  r  r  rZ  	size_of_as   &&&&           r   _extern_python_decl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r_  rm  s   &&&r    _generate_cpy_extern_python_decl+Recompiler._generate_cpy_extern_python_decl  s      95r   c                *    V P                  WR 4       R# )zCFFI_DLLEXPORT Nrb  rm  s   &&&r   #_generate_cpy_dllexport_python_decl.Recompiler._generate_cpy_dllexport_python_decl
  s      +<=r   c                *    V P                  WR 4       R# )r=   Nrb  rm  s   &&&r   '_generate_cpy_extern_python_plus_c_decl2Recompiler._generate_cpy_extern_python_plus_c_decl  s      2.r   c                (   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)
r   r   r  r:   r   r   OP_EXTERN_PYTHONr   r   r
   )r   r   r   rJ   r   s   &&&  r   _generate_cpy_extern_python_ctx*Recompiler._generate_cpy_extern_python_ctx  sz       #@B B;;;%&NOO__R(
):6

8##t2T97I	Kr   c                F   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   r   bytesencodedecodeUnicodeDecodeError
splitlinesr=  mapordrp  rstripr6   )r   sr'  linerM   printed_linecs   &&     r   r  )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                H    \        \        \        4      V P                  V&   R # r   )r   OP_PRIMITIVE	PRIM_VOIDr   r   r   r  s   &&&r   _emit_bytecode_VoidType"Recompiler._emit_bytecode_VoidType=  s    !'i!@r   c                n    \         VP                  ,          p\        \        V4      V P                  V&   R # r   )PRIMITIVE_TO_INDEXr   r   r  r   )r   r   r  rs   s   &&& r   _emit_bytecode_PrimitiveType'Recompiler._emit_bytecode_PrimitiveType@  s%    '0
!'j!Ar   c                    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   r   r  r   r   r   r  ry  s   &&& r   !_emit_bytecode_UnknownIntegerType,Recompiler._emit_bytecode_UnknownIntegerTypeD  s5     $&77BGGRWW> "(a!8r   c                ~    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 */
         )Nr  r  s   &&& r   _emit_bytecode_UnknownFloatType*Recompiler._emit_bytecode_UnknownFloatTypeJ  s/      WWbgg/ "(a!8r   c                x   \        \        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   NrX  zabi=)r   OP_FUNCTIONr   r  r   r   r   r   r  r  rA   r3  r  r  r:   OP_FUNCTION_END)r   r   r  r   	realindexrK   s   &&&   r   _emit_bytecode_RawFunctionType)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                v    \        \        V P                  VP                  ,          4      V P                  V&   R # r   )r   
OP_POINTERr   r  r   r  s   &&&r   _emit_bytecode_PointerType%Recompiler._emit_bytecode_PointerTypec  s$    !'
DOOBII4N!Or   c                    VP                  4       p\        \        V P                  V,          4      V P                  V&   R # r   )r   r   r  r   r   )r   r   r  raws   &&& r   _emit_bytecode_FunctionPtrType)Recompiler._emit_bytecode_FunctionPtrTypei  s.      "!'
DOOC4H!Ir   c                   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 structuresr   )
r   r3  r   r   OP_OPEN_ARRAYr   r   r   rM  OP_ARRAY)r   r   r  
item_indexs   &&& r   _emit_bytecode_ArrayType#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   )r   r   OP_STRUCT_UNIONr   )r   r   r  struct_indexs   &&& r   _emit_bytecode_StructType$Recompiler._emit_bytecode_StructType{  s'    **2.!'!Fr   c                f    V P                   V,          p\        \        V4      V P                  V&   R # r   )r   r   r-  r   )r   r   r  
enum_indexs   &&& r   _emit_bytecode_EnumType"Recompiler._emit_bytecode_EnumType  s$    [[_
!'!<r   )r   r   r   r   r#  r   r   r   r   r   r   r   r   F)r  r   r   r   rx  )r=   r   )NconstN)Yr#   r$   r%   r&   r&  r   r   r   r   r   r   r   r   r   r   r  r   r2  r   r>  rW  r]  rO  ri  rn  rq  rt  ry  r  r  r  r  r   r  r  r  r  r   r  _generate_cpy_union_collecttyper  r  _generate_cpy_union_declr  _generate_cpy_union_ctxr  r  r  r  r  r  r  r  r
  r  r9  r<  r?  rB  rl  rH  rM  rR  rU  *_generate_cpy_dllexport_python_collecttype._generate_cpy_extern_python_plus_c_collecttyper_  rc  rf  ri  rm  "_generate_cpy_dllexport_python_ctx&_generate_cpy_extern_python_plus_c_ctxr  r  r  r  r  r  r  _emit_bytecode_ConstPointerType_emit_bytecode_NamedPointerTyper  r  r  _emit_bytecode_UnionTyper  r'   r(   r)   s   @r   r   r   ~   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   r   c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )NativeIOi  c                |   < \        V\        4      '       d   VP                  R 4      p\        \        V `  V4       R# )rp  N)r   unicoderr  superr  r   )r   ry  r   s   &&r   r   NativeIO.write  s-    !W%%HHW%(D'*r   r7  )r#   r$   r%   r&   r   r'   r(   __classcell__)r   r*   s   @@r   r  r    s     	+ 	+r   r  c                     \        V R 4      # )r   )hasattr)	maybefiles   &r   _is_file_liker    s    9g&&r   c                    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)r   Tr   z(already up-to-date)Fz%s.~%dw)printr   r   r   r  r   r  getvaluer   readr6   IOErrorr   getpidr   renameOSErrorunlink)
r   r   r   target_fileverbose
recompilerr   outputf1tmp_files
   &&&&&     r   _make_c_or_py_sourcer    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                 (    Vf   Q h\        WW#V4      # r   r  )r   r   r   target_c_filer  s   &&&&&r   make_c_sourcer    s"    ( ') )r   c                     \        WR VV4      # r   r  )r   r   target_py_filer  s   &&&&r   make_py_sourcer    s    $ ') )r   c                 ,   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   makedirsr   rY   r  )	outputdirmodname	extensionpartss   &&& r   _modname_to_filer    sz    MM#E
BGGLL8U3BZ89 
"II77<<	*E*E11  s   9B BBc                 Z    \        W4      pV P                  WV34       \        WV4       V# r   )r   r   setattr)	patchlistclsr   new_metholds   &&&& r   _patch_methr    s.    
#
Cc%&Cx Jr   c                 H    \        V 4       F  w  rp\        WV4       K  	  R # r   )reversedr  )r  r  r   old_meths   &   r   _unpatch_methsr    s     '	288$  3r   c                    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   )MSVCCompilerN_remove_visual_c_refc                     V# r   r7  )r   manifest_files   &&r   r   &_patch_for_embedding.<locals>.<lambda>  s    Mr   darwin)	CCompilerc                    < 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)	linker_sor1  r  )r   r   kwdsr   old_link_shared_objects   &*, r   my_link_shared_object3_patch_for_embedding.<locals>.my_link_shared_object  sV    DNN*!%dnn!5NN((3$1q!)$>>>>r   link_shared_object)sysplatformcffi._shimmed_dist_utilsr  r  r  )r  r  r  r  r  s   &   @r   _patch_for_embeddingr     s\    
||w 	:#	1GAC ||x6	? "-Y-A-B"D  r   c                    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.dllr  z.dylibz.soget_ext_filenamec                    < S# r   r7  )r   ext_nametargets   &&r   r   #_patch_for_target.<locals>.<lambda>  s    vr   r  )r  r  endswithr  r  r  )r  r  r  s   &f r   _patch_for_targetr	    sg    2 t<<7"fF\\X%hFeOF	&8-/r   c                    \        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)rp  NzGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r   )r  r
  zthe current directory isz setting the current directory tor4   z.py)r   r   rr  _windows_unicode_apply_windows_unicoder  rf  r  _apply_embedding_fixr  r   r   rY   r   get_extensionr  getcwdr   r	  r  abspathchdircompiler  r  )r   r   r   tmpdircall_c_compilerc_filesource_extensionextradircompiler_verboser  debuguses_ffiplatformr  	embeddingr  
ext_c_fileextupdatedr  cwdmsg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#     )r#  r  )	r
  TNz.cNrg   NNT)$ior   r  	sysconfigr=   r   r   errorr   cffi_opcoder   r   rN  r  version_infoget_config_varr  r
   r,   rH   r^   rv   r   StringIOr  BytesIOr  r  r  r  r  r  r  r   r	  r"  r7  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   