Xjt,ddlZddlZddlZddlZddlmZmZddlmZddl dZ dZ dZ ejd Zejd k7xs ej d kxsej d k\xre xsej d k\ZGddZGddZGddZGddZGddZGddZej dk\r ej0ZnGddej4ZdZdZd'dZd'd Zd!Zd"Z d#Z!d$Z"d%Z# d(d&Z$y))N) ffiplatformmodel)VerificationError)*i&i'i(Py_GIL_DISABLEDwin32)r)r )r c eZdZddZdZdZy) GlobalExprcJ||_||_||_||_||_yN)nameaddresstype_opsize check_value)selfrrrrrs c/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/cffi/recompiler.py__init__zGlobalExpr.__init__s&    &c d|jd|jd|jjd|jd S)N { "z ", (void *), z , (void *) },)rrr as_c_exprrrs rrzGlobalExpr.as_c_exprs0 IIt||T\\%;%;%=tyyJ Jrcjd|jj|j|jfzS)Nz b'%s%s',%d)ras_python_bytesrrrs ras_python_exprzGlobalExpr.as_python_exprs2t||;;=tyy#//11 1rN)rr__name__ __module__ __qualname__rrr"rrrrs'J1rrc$eZdZdZdZdZdZy) FieldExprcJ||_||_||_||_||_yr)r field_offset field_sizefbitsize field_type_op)rrr+r,r-r.s rrzFieldExpr.__init__!s' ($  *rcdt|jz}d|jd|jdd|d|jdzd|d|jj dzS)N r", z, z z r)lenrr+r,r.r)rspacess rrzFieldExpr.as_c_expr(sZs499~%%)YY0A0AB%+T__=>%+T-?-?-I-I-KLM Nrctr)NotImplementedErrorrs rr"zFieldExpr.as_python_expr.s!!rc |jjtk(rd}n9|jjtk(rt |j }nt d|jj||jdS)Nb'') r.opOP_NOOP OP_BITFIELDformat_four_bytesr-r5r!r)r size_exprs ras_field_python_exprzFieldExpr.as_field_python_expr1sj    G +I    " "k 1)$--8I% %"00@@B'"ii) )rN)r$r%r&rrr"r?r'rrr)r) s+N " )rr)ceZdZdZdZdZy)StructUnionExprc t||_||_||_||_||_||_||_||_yr)r type_indexflagsr alignmentcommentfirst_field_indexc_fields) rrrCrDrrErFrGrHs rrzStructUnionExpr.__init__=s; $  " !2  rc d|j|j|jfzd|jd|jdzd|j t |jfzz|jrd|jzzdzSdzdzS)Nz { "%s", %d, %s,z rz%d, %d z /* %s */ r7z},) rrCrDrrErGr2rHrFrs rrzStructUnionExpr.as_c_exprHs#tyy$//4::&NN&*ii@At55s4==7IJJK26;-G  DFG  rct|jt}|jDcgc]}|j }}dt |j t ||jddj|dScc}w)Nz(b'',,)) evalrDG_FLAGSrHr?r=rCrjoin)rrDc_field fields_exprs rr"zStructUnionExpr.as_python_exprOstTZZ)&*mm5"3355 5 doo . e $ II HH[ ! # #5sBNr#r'rrrArA<s !#rrAceZdZdZdZdZy)EnumExprcJ||_||_||_||_||_yr)rrCrsignedallenums)rrrCrrVrWs rrzEnumExpr.__init__Zs% $    rcd|j|j|j|jfzg}d}t |j |dzkDrj|j j d|dz}|dkrnE|dz }|jd|j ||d|}t |j |dzkDrj|jd|j |dd d j|S) Nz% { "%s", %d, _cffi_prim_int(%s, %s),rnrLdrz ""z" }, ) rrCrrVr2rWfindappendrP)rlinespendingjs rrzEnumExpr.as_c_expras8DIIt<@IIt{{ JJrNr#r'rrrprpzs%@KrrpceZdZdZdKdZdZdZdZdZdZ gdZ d Z dLd Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dMd!Z"d"Z#d#Z$d$Z%e%Z&d%Z'd&Z(e(Z)d'Z*e*Z+d(Z,d)Z-d*Z. dNd+Z/d,Z0d-Z1d.Z2d/Z3dMd0Z4d1Z5d2Z6d3Z7d4Z8d5Z9d6Z:d7Z;d8Ze>xZ?Z@d;ZAd<ZBd=ZCd>ZDd?ZEeExZFZGd@ZHdAZIdBZJdCZKdDZLdEZMdFZNeNZOeNZPdGZQdHZRdIZSeSZTdJZUy )O RecompilerrcD||_||_||_t|_yr)ffi module_nametarget_is_python VERSION_BASE_version)rrxryrzs rrzRecompiler.__init__s & 0$ rc:t|j||_yr)maxr|)rvers r needs_versionzRecompiler.needs_versionsDMM3/ rc i|_|jdt|jt}g|_|D]/}|j s|j|Jt |j|j|<|jj||jD]}t|tjtjtjtjtjfsJ|j|"t |j|j|<|jj||jjd2|D]}|j r|j| t |j|j|<|jj||j sj|j"w|jjdd|jj%vsJi|_i|_|D]V}t|tj*rd|j&|<-t|tj,sHd|j(|<Xt/t|j&dD]\}}||j&|<t/t|j(dD]\}}||j(|<|D];}t1|d|j2j4z}|||j|=|jD]}t|t6rJt9|j|_y)N collecttypekeyENDLENc|jSrrtps rz/Recompiler.collect_type_table.. RWWrc|jSrrrs rrz/Recompiler.collect_type_table..rr_emit_bytecode_) _typesdict _generatesortedstr cffi_typesis_raw_functionr2r^args isinstancerVoidTypeBasePrimitiveType PointerTypeStructOrUnionOrEnumFunctionPtrType is_array_typelengthvalues_struct_unions_enums StructOrUnionEnumType enumerategetattr __class__r$CffiOptuple)r all_declsrtp1imethodr:s rcollect_type_tablezRecompiler.collect_type_tables }%4??4  .B!!r*222&)$//&:#&&r*770C%cENN,1,C,C,1,=,=,1,E,E,1,A,A ,CDDD s+3/24??/C,OO**3/0&&u- ." 2B%%$//"*=*E&)$//&:#&&r*## (=OO**51  2 4??113333!  'B"e112*.##B'B/"& B  ' vd&9&9*< >? (EAr&'D   # (vdkk*< >? EArDKKO  ,BT#4r||7L7L#LMF 2tr* + , // *Bb&) )) *0rc>|j }|j|Sr)rz enumfields)rrexpand_anonymous_struct_unions r _enum_fieldszRecompiler._enum_fieldss#-1,A,A(A%}}:;;rct|tjs)t|tr|D]}|j |y||j vrd|j |<t|tj r |j |jyt|tjrn|ja||jjjvr>|j|D])\}}}}|j |j|||+yyy|jD]\}}|j |yyr)rrBaseTypeByIdentityr_do_collect_typerras_raw_functionrfldtypesrx_parser_included_declarationsr _field_type _get_items)rrxname1r_s rrzRecompiler._do_collect_types*"e667"e$-A))!,-  T__ $"&DOOB "e334%%b&8&8&:;B 3 34;;*$(("2"2"I"II,0,=,=b,AP(sAq--d.>.>r5#.NOPJ+ MMO-DAq))!,- %rc|jjjj}t |D]A\}\}}|j dd\}} t |d|d|} ||_ |||Cy#t$rtd|zwxYw#t$r} tj| |d} ~ wwxYw)Nr0r_generate_cpy_rz"not implemented in recompile(): %r) rxr _declarationsitemsrsplitrAttributeErrorr_current_quals Exceptionrattach_exception_info) r step_namelstrrqualskindrealnameres rrzRecompiler._generateshh,,224!'  D+2u!ZZQ/ND( A @I(KL  &+#r8$  " A'84?AA A  ++At4 s$A?,B?B B?#B::B?)globalfield struct_unionenumtypenamecZi|_|jD]}g|j|<t|_|j d|j |jD]A}|j|}|dk7r|j dt||j|<C|jd}|jjD]3\}}|t|ksJ||j|jk(r3Jt|t|jk(sJ|jd}|jjD]3\}}|t|ksJ||j|jk(r3Jt|t|jk(sJy)Nctxrc|jSrr)entrys rrz0Recompiler.collect_step_tables..s 5::rrrr) _lsts ALL_STEPSset_seen_struct_unionsr_add_missing_struct_unionssortrrrr2rr)rrrrrs rcollect_step_tableszRecompiler.collect_step_tabless  'I$&DJJy ! '#&5  u '') /I**Y'CG#56$)#JDJJy !  /jj(((..0 *EBs3x< <q6;;"'') )) *3x3t223333jj [[&&( *EBs3x< <q6;;"'') )) *3x3t{{++++rc@|jj|dzy)Nr\)_fwrite)rwhats r_prntzRecompiler._prnt!s  dTk"rct|jr|J|j|y|J|j||yr)rzwrite_py_source_to_fwrite_c_source_to_f)rfpreambles rwrite_source_to_fzRecompiler.write_source_to_f$sA  # ##  % %a (' ''  $ $Q 1rcttjjtjj t |d5}|j cdddS#1swYyxYw)Nr)openospathrPdirname__file__ readlines)rfilenamegs r_rel_readlineszRecompiler._rel_readlines,sH "'',,rwwx8(CS I !Q;;= ! ! !s A&&A/c  ||_|j}|jj|dts|d|j d}|j d}|j d|||dz|dj||jjdd }|jj|d |jd |d |j|jj|d |d|d||d|d||d|j d}|j d}|j d|||dz|dj||jt|d|||||d||dt|jjDcgc] \}}||f c}}}t!|j"D]=\}} d} ||vrd||j%z} |d|| j'| fz?|j"s|d|d|t)|_|j-di} |j.D]c} |j0| } t3| | | <| | dkDs)|d| d| d | D]}||j'|d|e|jj4rf|d!|jj4D].} |j6dd"\}}| t;d&|d'|d(0|d)|d||d*|d+|j.D]!} | | dkDr |d,| z|d-| z#|j.D]} | d.k7s |d/| | | fz|jj4r |d0n|d1|d2t3|j"fzd}|j<dkDs|jj|dz}|d3|z|d||d4|d5|d||d|d6|d7|d8|d9|dzr|d:|d;|d<|d=|j>z|d>|d?|d@|dA|dB|dC|dD|dE|d|d6|dF|dG|d9|dH|j|j>fz|d@|d||d4|dI|dd|_ycc}}w#t8$rt;d#|jd$|d%wxYw)JNz#define _CFFI_USE_EMBEDDINGz#define _CFFI_NO_LIMITED_APIz_cffi_include.hz#include "parse_c_type.h" zparse_c_type.hrr7.z#define _CFFI_MODULE_NAME "r[z1static const char _CFFI_PYTHON_STARTUP_CODE[] = {z0 };z#ifdef PYPY_VERSIONz3# define _CFFI_PYTHON_STARTUP_FUNC _cffi_pypyinit_#elsez+# define _CFFI_PYTHON_STARTUP_FUNC PyInit_#endifz _embedding.hz#include "_cffi_errors.h" z_cffi_errors.hz>/************************************************************/zstatic void *_cffi_types[] = {z // z/* %2d */ %s,%sz 0z};declrzstatic const struct _cffi_z _s _cffi_zs[] = {z.static const char * const _cffi_includes[] = {rc 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 */rz %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; return NULL;}z# ifdef _MSC_VERz PyMODINIT_FUNCz PyInit_z(void) { return NULL; }z# endifPyInit_(void)z5 return _cffi_init("%s", 0x%x, &_cffi_type_context);z# pragma GCC visibility pop) rrrx _embeddingUSE_LIMITED_APIrindexrPryr_print_string_literal_in_arrayrVERSION_EMBEDDEDdictrrrr _get_c_namerr_seen_constantsrrrr2_included_ffis_assigned_sourcerr _num_externpyr|)rrrprntr_rbase_module_namertypeindex2typer:rFnumsrrrffi_to_includeincluded_module_nameincluded_sourcerDs rrzRecompiler.write_c_source_to_f0szz 88   * . / / 0##$56 KK5 6**+;<a!  RWWU^ ++11#6r: 88   * d6F6FH I D E  / /0C0C D L & '  # $ M  # $ N''7E 9:A../?@E!AaCL    / 0 MN  X  MN  -.doo6K6K6MN7B2wNOt/ CEArGN" >!#4#@#@#BB "a%AA B  C  K T   #u v I**Y'C!#hDOI"y*+ ,E*+,T   88 " " A B"&(("9"9 :8&77;:(/#*+344"689 : N J F NO  :II"^i/0,y89  :  LIG#+tI .JJK L 88 " " $ % - . %T__)=(? ?@    !TXX%8%8%D QJE !E )* T    NO X  "#  5E GH S 19 8 9 E F M - => ./   S  ! "# 8H JK Z W   "2 45 S  D   dmmH-- . S  X   +, X ]OH&8+!HHn7888s9V7 V==&W#c(t|trd|dSt|ttfrR|Dcgc]}|j |}}t |dk(r|j dddj|dS|jScc}w)Nr8r9rr7(rLrM) rrlistr_to_pyr2r^rPr")rritemreps rrzRecompiler._to_pysz a > ! a$ '1234;;t$3C33x1} 2 XXc], ,!! 4sBc ||_|j}|d|dt|jjxsd}t |D]H}|jj|} |j dd\}}| td|d ||fzJ||d |jd |d |jfzd|_ t|j|_ |jDcgc]}|j} }|d |jdj| dt!|j"j%D cgc] \} }|| f c}} } |j&D]D} |j(| } t| dkDs!| dk7s'|d| d|j| dF|dkDr5|ddjt |Dcgc]}d|z c}d|dy#t$rtd|jd|dwxYwcc}wcc}} wcc}w)Nz# auto-generated filezimport _cffi_backendr'rcrrrzMnot implemented yet: ffi.include() of a C-based ffi inside a Python-based ffizfrom %s import ffi as _ffi%dzffi = _cffi_backend.FFI('rKz _version = 0x%x,z _types = r7rLrrz _zs = z _includes = (rz_ffi%dz,),rM)rrr2rxr ranger rrryr|rrr!rrPrrrrr)rrr  num_includesrrrrr: types_lstrrrrs rrzRecompiler.write_py_source_to_fs3zz $% #$488228b9 |$ MA!XX44Q7N 4"33BQ76$o*'455 /3G2KK L M  0@0@ BC #t}}&6 67  048OODbR'')D D 4;;rwwy/A#B DEdoo6K6K6MN7B2wNO GI**Y'C3x!| W 4DKK4DEF G !   |1DEA8a<EFI J S C" 4'.344 4"ENFs/H?H9$H> - I&H6c |j|Sr)r)rtypes r _gettypenumzRecompiler._gettypenum st$$rc :d}t|tjr|js|j r!|j dk7rd}d|j z}n|t|tj rd|jdd}nL|jd}d|d|j jdd }|d vr|jtd }nt|tjr|j||||yt|tjtjfr;|jd ||j||fz|jd |zyt|tj r+d|jdz}d|j|z}d}n t#||jd|d|d||d|jd|d|jdd|d|jd |zy)Nr7_Bool_cffi_to_c_intz, %srz)_cffi_to_c_doublez )_cffi_to_c_r0rchar16_tchar32_tz-1z6 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 == (rMz && PyErr_Occurred()))rrris_complex_typeis_integer_typerUnknownFloatType get_c_namereplacerVERSION_CHAR16CHAR32r"_convert_funcarg_to_c_ptr_or_arrayrrr rr5) rrfromvartovarerrcodeextraarg convertercnameerrvalues r_convert_funcarg_to_cz Recompiler._convert_funcarg_to_cs b%11 22;M;M;O!!#7(:, !BGG+B 6 678:}}R7HJ  b)383577??33LN 44&&';<H E-- .  3 3B497 D e779P9PQR JJO 0 0 4g>? @ JJy7* +  E11 202==3DDI)D,<,|jjdd}|d vr|jtd |d |dSd ||j|fzSt|tjtjfrd ||j|fzSt|tjr3d ||jtj|jfzSt|tjrB|j t#d|j%d|dd||j|fzSt|tj&rd ||j|fzSt)|)Nr"z_cffi_from_c_int(rrMz_cffi_from_c_double( long doubler0rr$ _cffi_from_c_rz/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r9z ' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d)))rrrr+rr,r*r.rr/r rr ArrayTyperrfldnames TypeErrorrrr5)rrvarcontextr6s r_convert_expr_from_czRecompiler._convert_expr_from_cPs b%11 2!!#7(:58"''BBB 6 674799M)"2D2D2FS144&&';<05s;;H))"-L/// U..0E0EF GET%%b)I++ + EOO ,ET%%e&7&7&@AICC C E// 0{{"NN$g!/00ET%%b)I++ + ENN +DT%%b)H++ +&b) )rc.|j|d|dS)Nz(*(z *)0)) _global_typerrrs r _typedef_typezRecompiler._typedef_typess  T%;<|j|j|jj|j|yy)Norigin unknown_type) approxname)rV named_ptr) rKrRr _struct_ctxrrrNamedPointerTypetotyperJs r_generate_cpy_typedef_ctxz$Recompiler._generate_cpy_typedef_ctxs   D ) "d# 2x &. 8   RT  : E22 3   RYY 277')  +4rc|j|j|jr|js|j|yyyr)rrellipsisrzrJs r"_generate_cpy_function_collecttypez-Recompiler._generate_cpy_function_collecttypes= b0023 ;;t44  ! !" % 5;rc  |jrJt|tjsJ|jr|j ||y|j }t|j}|dk(rd}n |dk(rd}nd}g}g}d|z}t|jD]=\} } |j| jd| z||jd| z?d j|} | xsd } |jr|jd z} nd } | d |d| d} |d|jj| |dd j|}d}t|jtjrd }|d||d|d|d|d|d|d|d|d|dd|z}t|jD]%\} } | jd| z|}|d|z't!}t!}|jD]} |j#| ||t%|D]}|d|dt|jtjs7d}d|z}d|jjd|z}|||dnd}d }t|jdkDrt't|j}|D] } |d | z||d!|t|t|d j|D cgc]} d"| z c} fz|d#|t|jD]&\} } |j)| d$| zd| zd%|(|d&|d't't|jD cgc]} d| z }} d j|}|d(||d|d)|d*|d+||d,|dk(r|d-|rA|d.|j+|jd/d0z|D] }|d|z|d1n"|D] }|d|z|d2|d3|d|d4d5}d6}g}g}d|z}t|jD]Q\} } d }|| rd7}d8}| jd9|| fz|}|j||jd:|| fzS|j}||r?d|z}|jd;|}|j-d|tj.}d}d<}d8}|rd j|} | xsd } | d|d| d} |d|j| |d|r||d j|}|d(||d|d)|r|d=|dn|d>|d?||d@|ycc} wcc} w)ANrnoargrarg0rargument of %sz x%dzx%drvoidr0r7_cffi_d_rrMstatic rzreturn r(r)rz#ifndef PYPY_VERSIONzstatic 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%drzarg%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;rct|tjxs,t|tjxr|j Sr)rrr PrimitiveTyper*)rs rneed_indirectionz@Recompiler._generate_cpy_function_decl..need_indirections=tU%8%89-e&9&9:,))+ .rFrTz %sx%dz%sx%dz *resultz *result = z return result;z# define _cffi_f_z _cffi_d_r)rzrrrr]_generate_cpy_constant_declrr2rrr^r-rPabirjrrr=rrr8rGinsert void_type)rrrr numargsargname argumentscall_argumentsrFrrrepr_argumentsroname_and_arguments result_codeargr;r<r result_declrngfreelinerm difference indirection tp_results r_generate_cpy_function_declz&Recompiler._generate_cpy_function_decls (((("e33444 ;;  , ,R 6 zzbgg, a<G \GG "T) ) -GAt   T__VaZA B  ! !%!) , -9-'16 66&&3,CC36nM BII001CD FG S >2 bii 0K k4 @A S  #$ ! 4 IJ S "T) ) GAt//&1*g6C 3  E E GG DD  ' 'i C D9% $D D" # $"))U^^4%K$t+G!BII$8$8G$LLK   ( )KK rww2 +t^ DE $% %&  )* a< . /  #**299h NO P% &TH_% & % &% &TH_% & ( ) $ % S  W  .  "T) ) >GAtK%! ! //(k1-="=wGC   S !  ! !'[!,<"< = >II I &$t+G&&z7;C   Q $IK&KJ !YYy1N+5vN7:D7E"G   4 45G HJ K I[!!YY~6N k4H I'( I dDA B X g6Bs + X Xc |jr|js|j||y|j|j }t |j }|jrt}n|dk(rt}n|dk(rt}nt}|jdjt|d|zt||d|zy)Nrrrz _cffi_f_%sz _cffi_d_%s)r)r]rz_generate_cpy_constant_ctxrrr2rOP_DLOPEN_FUNCOP_CPYTHON_BLTN_NOP_CPYTHON_BLTN_OOP_CPYTHON_BLTN_Vrr^rr)rrrrCrr meth_kinds r_generate_cpy_function_ctxz%Recompiler._generate_cpy_function_ctx3s ;;t44  + +B 5 __R%7%7%9: bgg,  &I \)I \)I)I 8## t\D0i4(4/ 1 2rct|tjra|j}|dk(r|j d}d|d|d}|j |d|z|j }tj||}|S)N...rz_cffi_array_len((()0)->rM%s[0])rrrBrr-rr)r tp_struct field_nametp_field actual_lengthptr_struct_nametp_items rrzRecompiler._field_typeIsr h 0$OOM%"+"6"6s";#Z!1 &&y'J2F'/}}6Gw >Hrc|j||jr'|jD]}|j|yyr)rrzanonymous_struct_fields_struct_collecttype)rrfldtypes rrzRecompiler._struct_collecttypeUsD b!  557 2((1 2 !rc |jy|j}d|}|d|d|d|d|d|d|d|j|D]\}}}} |js|d k\r|d k7r|d |d |d |d6t |t j rc|j|jdk(rH|j}|dz}t |t j r|j8|jdk(rH|d|jdd|z| d|d|d|d|d|d|y#t$r} |dt| zYd} ~ d} ~ wwxYw)N_cffi_checkfld__CFFI_UNUSED_FNz static void rz *p)rz8 /* only to generate compile-time warnings or errors */z (void)p;rr7z (void)((p->z) | 0); /* check that 'rz' is an integer */rz[0]riz*tmpzfield %rrz = &p->z; (void)tmp; }z /* %s */rzstruct _cffi_align_z { char x; z y; };) rrrr+rrrBrrr-rr) rrr6rVr  checkfuncnamefnameftyper-fqualrs r _struct_declzRecompiler._struct_decl\sq ;;  zz/9;   u => S  GH \-1->->r-B , )E5(E ,((*h!m{05ueEF"%9!LL0ELLE4I!JJE!EME"%9!LL0ELLE4I$$VZ-=U$K ,( S  :u MN  % ,\CF*++ ,s+(,EA,EE$E E? E::E?Nc|j|}d}g}t|tjr|j d|j |j dd}||j jjvr|"||j jjvr|j n7|jst|jrn|j d|jrO|jdkDrt|d|jd|j dn|j d d }d j|xsd }g}|t|j!|} | D]\} } } } |j#|| | } |j%| d |j&d| dt(}| dk\r t*}d| z}nQ|&t| tj,r| j.d}n&d||j1dn |j&d| d}|| dk\rd}n.|d|j&d| d}nd|j1dd| d}|j t3| ||| t5||j| t7|j8d}|j8dj;||d}d}d }n,|d!|j&d"}d#}n d$|d}d%|d&}d}nd}d'}d'}|}|j8d(j t=|j&||||||||j>jA|y))N _CFFI_F_UNION_CFFI_F_OPAQUEopaque_CFFI_F_CHECK_FIELDSrz 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_EXTERNALexternal|0zfield 'rr9rz %d /* bits */z (size_t)-1z sizeof(((rrrMz(size_t)(((char *)&((z)4096)->z) - (char *)4096)z offsetof(r7rrz (size_t)-2unnamedz sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)rr)!rrr UnionTyper^rrxrrpartialanyrpackedr5rPrrr_check_not_opaquerr;r<rBrr-r)rr2rextendrArr:)rrr6rVrWrCreason_for_not_expandingrDrHrfldnamerr-rr:roffsetrGalignrFs rrXzRecompiler._struct_ctx~s9__R( #'  b%// * LL ) ;;  LL) *'/ $ dhh&&== ="$(("2"2"I"II{{"s2#=#=#?@ 34yy99q=-RYY())  -. LL+ ,'1 $&3 # +d//34J5? E1(E**2w@&&w:<''7'KMq=$B*X5D]"7EOO<.'D/8.? c*09?!D=HM)F*!1F+46==3DgNFgvtX$R)ABDE3 E8!$DJJw$7 8  JJw  & &x 0}##(/8~~?D8E),12DDNPEDE " .G >")) BGGZeW-x 9 :   $$R(rct|tjr'|j}t|tjr't|tjr|j t d|zyy)Nz0%s is of an opaque type (not declared in cdef()))rrrBrrrrD)rrlocations rrzRecompiler._check_not_opaquesbU__-BU__- b%-- .2;;3FBXMO O4G .rct|jj}|jd|D]\}}||jvs|j rt d|d|jjdr-|jddjr|jdd}nA|jdk(r$|jdk(rd}|j|dnt d||j|d|y) Nc |dS)Nrr')tp_orders rrz7Recompiler._add_missing_struct_unions..s hqkrrzinternal inconsistency: z* is partial but was not seen at this point$r_IO_FILEFILE) rrrrrrr5r startswithisdigit forcenamerRrX)rrrorderrVs rrz%Recompiler._add_missing_struct_unionss 4&&,,./ 12 7IB111::->@/CDD77%%c*rwwqr{/B/B/D!#JWW *r||v/E!'J%%b&1-/1/455  T:6 7rc&|j|yr)rrJs r _generate_cpy_struct_collecttypez+Recompiler._generate_cpy_struct_collecttypes   $rcb|jd}d|vr||jddfS|d|zfS)Nr7r0r)r-r.)rrr6s r _struct_nameszRecompiler._struct_namess< b! %<%--S11 1#+% %rcH|j|g|j|yr)rrrJs r_generate_cpy_struct_declz$Recompiler._generate_cpy_struct_decls""6t11"56rcH|j|g|j|yr)rXrrJs r_generate_cpy_struct_ctxz#Recompiler._generate_cpy_struct_ctxs"5d0045rct|tjr|j||y|j |yr)rrr_generate_cpy_enum_collecttyperrJs r#_generate_cpy_anonymous_collecttypez.Recompiler._generate_cpy_anonymous_collecttype s. b%.. )  / /D 9  $ $R (rct|tjr|j|y|j ||d|zyNtypedef_)rrr_generate_cpy_enum_declrrJs r_generate_cpy_anonymous_declz'Recompiler._generate_cpy_anonymous_decls5 b%.. )  ( ( ,   b$ T(9 :rct|tjr|j||y|j ||d|zyr)rrr _enum_ctxrXrJs r_generate_cpy_anonymous_ctxz&Recompiler._generate_cpy_anonymous_ctxs5 b%.. ) NN2t $   RzD'8 9rc||f|jvrtd|d|d|jj||f|j}d|d|}|r`|d|z|d|d|d |d |d |d ||d kDrd|fz}|d|d|d|d|dn=|J|d|z|d|d|j dd|d|d|y)Nzduplicate declaration of z 'r9_cffi_rz$static int %s(unsigned long long *o)rz int n = (z) <= 0;z *o = (unsigned long long)((z) | 0); /* check that z is an integer */rz%dUz if (!_cffi_check_int(*o, n, z))z n |= 2;z return n;rzstatic void %s(char *o)z *(rz)o = rg)r rr:rr-)ris_intrrcategoryrr funcnames r_generate_cpy_constzRecompiler._generate_cpy_consts  d t33 3#6>EG G   (D!12zz$,d3  7(B C I 41 2 :>F G&?"';."8K[JK]#   I& && *X5 6 I R]]3%7> ? I rcd|j}|r |jr|j|yyr)r+rzrrrrrs r"_generate_cpy_constant_collecttypez-Recompiler._generate_cpy_constant_collecttype<s.##%..  ! !" %/rcJ|j}|j|||yr)r+rrs rrnz&Recompiler._generate_cpy_constant_declAs"##%   r2rc|js!|jrttd}n4|jrt}nt }|j |}t||}|jdjt|d|z|y)Nrr_cffi_const_%s) rzr+rOP_CONSTANT_INTOP_DLOPEN_CONST OP_CONSTANTrrr^r)rrrr const_kindrCs rrz%Recompiler._generate_cpy_constant_ctxEsy$$););)=_b1G$$, ( ,JZ4G 8## t-4g > @rc&|j|yr)rrJs rrz)Recompiler._generate_cpy_enum_collecttypeUs b!rcJ|jD]}|jd|y)NT) enumeratorsr)rrr enumerators rrz"Recompiler._generate_cpy_enum_declXs%.. 7J  $ $T: 6 7rc |j|}ttd}|jr|j t |j |jD]3\}}|jdjt|d|z||5|d|vr|js d|z}d|z}nh|j|jg} |jj| }tt|jj| ddk}d j!|j } |jd jt#|j$|||| y) Nrrrrrz sizeof(%s)z ((%s)-1) <= 0rrLr)rrOP_ENUMrzcheck_not_partialzipr enumvaluesrr^rbuild_baseinttyperxsizeofintcastrPrTr) rrr6rCrr enumvaluerrVbasetprWs rrzRecompiler._enum_ctx\s6__R( "%   "%(%G 3 !J JJx ' ':'7*'Dg'02 3 3  E!1$:O:O%'D$u,F))$((B7F88??6*DTXX]]6267!;>+,rcyrr'rJs r_generate_cpy_macro_collecttypez*Recompiler._generate_cpy_macro_collecttypewrPrc@|dk(rd}n|}|jd||y)NrTr)r)rrrrs r_generate_cpy_macro_declz#Recompiler._generate_cpy_macro_declzs( ;KK   t Erc|dk(r|jrtd|dd}n|}ttd}|jdj t |d|z||y)Nrz(cannot use the syntax '...' in '#define z ...' when using the ABI moderrrr)rzrrrrr^r)rrrrrs r_generate_cpy_macro_ctxz"Recompiler._generate_cpy_macro_ctxsm ;$$',0344KK"- 8## t-4g#. 0 1rct|tjrL|j}|dk(rd|d}|j |j d|z}tj||}|S)Nrz_cffi_array_len(rMr)rrrBrrIr)rr global_namerrs rrIzRecompiler._global_typesY b%// *IIM%9D F '';1FGG-8B rcF|j|j||yr)rrIrJs r"_generate_cpy_variable_collecttypez-Recompiler._generate_cpy_variable_collecttypes d//D9:rcR|j}|j||}t|tjr|j |j }d}nd}d|d}|d|j||jz|d|d|d |d |d |y) Nr7&z *_cffi_var_rrerrz return rr)r) rrIrrrBrrr-r)rrrr  ampersandrs r_generate_cpy_variable_declz&Recompiler._generate_cpy_variable_declszz   r4 ( b%// *ryy/@BII)-. Yt43F3FG GH S  9d 34 S  rc |j||}|j|}|jrt}nt}|j dj t|d|zt||y)Nrz _cffi_var_%s) rIrrz OP_GLOBAL_VAROP_GLOBAL_VAR_Frr^rr)rrrrCr:s r_generate_cpy_variable_ctxz%Recompiler._generate_cpy_variable_ctxse   r4 (__R(  B B 8## t^d2F2z4J K Mrc^t|tjsJ|j|yr)rrrrrJs r'_generate_cpy_extern_python_collecttypez2Recompiler._generate_cpy_extern_python_collecttypes&"e33444 b!rc |j}t|jtjrd}n%d|z}d|jj d|d}|d|z|d|j d|d |d |g}d |z}t|jD]+\}} | j d |z|} |j| -d j|} | xsd} |d| d} |jdk(rd| z} d} tt|jdzd}| |jr t|d}t|jtjr;d|jj d||jj d|fz}|||jj | |d|d|z|dt|jD]f\}} d|z} t| tjs| | rd| z} tj| } |d| j d|dz| fzh|d|zt|jtjs%|d|jj dd|d ||xj d!z c_y)"Nrrhz (int)sizeof(r7rMz3static struct _cffi_externpy_s _cffi_externpy__%s =rrr1z , 0, 0 };rbz a%drrcr __stdcallz_cffi_stdcall cXt|tjxr|jdk(S)Nr@)rrrlrrs rmay_need_128_bitsz9Recompiler._extern_python_decl..may_need_128_bitss(r5#6#67-GG}, .rrez!sizeof(%s) > %d ? sizeof(%s) : %drz char a[%s];z char *p = a;za%drz *(%s)(p + %d) = %s;rz, _cffi_call_python(&_cffi_externpy__%s, p);z return *(z)p;rr)rrrjrrr-ryrrr^rPror~r2rrr )rrr tag_and_spacer size_of_resultrFrtrrryrvrwr size_of_as r_extern_python_declzRecompiler._extern_python_declszz bii 0 N$t+G $$R14N BT IJ   dN4 5  "T) ) "GAt//&1*g6C   S ! "9-'16)-~> 66[ !14F!F  .BGG Q* RYY 'Ir*I bii!4!4 5; $$R() $$R()?55I }bii&:&:;M&N OP S  _y ()  ) MGAt!)C4!4!45%d+Ci((. (DOOC,@!A#s+KK L  M ;d BC"))U^^4 ryy';';C'@B C S   arc*|j||dy)NrerrJs r _generate_cpy_extern_python_declz+Recompiler._generate_cpy_extern_python_decls   T95rc*|j||dy)NzCFFI_DLLEXPORT rrJs r#_generate_cpy_dllexport_python_declz.Recompiler._generate_cpy_dllexport_python_decls   T+<=rc*|j||dy)Nr7rrJs r'_generate_cpy_extern_python_plus_c_declz2Recompiler._generate_cpy_extern_python_plus_c_decls   T2.rc|jr td|jr td|j|}t t |}|jdjt|d|z||y)Nz,cannot use 'extern "Python"' in the ABI modez$a vararg function is extern "Python"rz&_cffi_externpy__%s) rzrr]r5rrOP_EXTERN_PYTHONrr^r)rrrrCrs r_generate_cpy_extern_python_ctxz*Recompiler._generate_cpy_extern_python_ctxsw  #@B B ;;%&NO O__R( ):6 8## t2T97D I Krc|j}|dt|ts|jd}n|j d|j dD]}|}t dturtt|}nt|dd}|d|zjd}|D]#}t|d k\r ||d}|d |fzz }%||y) Nz=// # NB. this is not a string because of a size limit in MSVCzutf-8Tz//rrz// r7Lz%d,) rrbytesencodedecode splitlinesrmapordasciirstripr2)rsr linerF printed_linecs rrz)Recompiler._print_string_literal_in_arrayszz LM!U#!A HHW LL& DGDzU"3~ .2. %'/))+ ,L -|$*&#%L ,  -   rcFttt|j|<yr)r OP_PRIMITIVE PRIM_VOIDrrrrs r_emit_bytecode_VoidTypez"Recompiler._emit_bytecode_VoidType1s!' i!@rcdt|j}tt||j|<yr)PRIMITIVE_TO_INDEXrrr-r)rrrrns r_emit_bytecode_PrimitiveTypez'Recompiler._emit_bytecode_PrimitiveType4s%'0 !' j!Arcd|jd|jd|jd}tt||j|<y)Nz_cffi_prim_int(sizeof(z), ( ((z)-1) | 0 /* check that z' is an integer type */ ) <= 0)rrr-rrrrr(s r!_emit_bytecode_UnknownIntegerTypez,Recompiler._emit_bytecode_UnknownIntegerType8s5$&77BGGRWW>"( a!8rcxd|jd|jd}tt||j|<y)Nz_cffi_prim_float(sizeof(z) * (((z6)1) / 2) * 2 /* integer => 0, float => 1 */ )r5r6s r_emit_bytecode_UnknownFloatTypez*Recompiler._emit_bytecode_UnknownFloatType>s/ WWbgg/"( a!8rc4tt|j|j|j|<|dz }|j D]e}|j|}||k7rJt |tjr|j||ntt||j|<|dz }gt|j}|j-|jdk(r|dz}ntd|jtt||j|<y)Nrr rczabi=)r OP_FUNCTIONrrjrrrrrlr3r;rr]ror5OP_FUNCTION_END)rrrr realindexrDs r_emit_bytecode_RawFunctionTypez)Recompiler._emit_bytecode_RawFunctionTypeDs!' T__RYY5O!P  77 C,I !c5#6#6755c5A-3GY-GDOOE* QJE BKK  66 vv$ )bff*>??!'!?rcltt|j|j|j|<yr)r OP_POINTERrrZrr/s r_emit_bytecode_PointerTypez%Recompiler._emit_bytecode_PointerTypeWs$!' DOOBII4N!Orcx|j}tt|j||j|<yr)rrr@rr)rrrraws r_emit_bytecode_FunctionPtrTypez)Recompiler._emit_bytecode_FunctionPtrType]s.  "!' DOOC4H!Irc|j|j}|jtt||j |<y|jdk(r(t dt|jddd|j |dzdk(sJtt||j |<tdt|j|j |dz<y)Nrztype z/*...*/zb badly placed: the '...' array length can only be used on global arrays or on fields of structuresrr) rrrr OP_OPEN_ARRAYrrrr.OP_ARRAY)rrr item_indexs r_emit_bytecode_ArrayTypez#Recompiler._emit_bytecode_ArrayTypeas__RWW- 99 %+M:%FDOOE " YY% #GOOIu589 9 ??519-6 66%+Hj%ADOOE ")/c"))n)EDOOEAI &rc\|j|}tt||j|<yr)rrOP_STRUCT_UNIONr)rrr struct_indexs r_emit_bytecode_StructTypez$Recompiler._emit_bytecode_StructTypeos'**2. !'!Frc\|j|}tt||j|<yr)rrrr)rrr enum_indexs r_emit_bytecode_EnumTypez"Recompiler._emit_bytecode_EnumTypets$[[_ !'!<rF)r7r)NconstN)Vr$r%r&r rrrrrrrrrrrrrrr r8r=r0rGrKrMrOrRr[r^rrrrrrXrrr_generate_cpy_union_collecttyperr_generate_cpy_union_declr_generate_cpy_union_ctxrrrrrrnrrrrrrrrrIrrrr *_generate_cpy_dllexport_python_collecttype._generate_cpy_extern_python_plus_c_collecttyperrrrr"_generate_cpy_dllexport_python_ctx&_generate_cpy_extern_python_plus_c_ctxrr0r3r7r9r>rA_emit_bytecode_ConstPointerType_emit_bytecode_NamedPointerTyperDrIrM_emit_bytecode_UnionTyperPr'rrrvrvsM% 081t <-&&HI,>#2![z"0h%*(XK *F=< F+& `D2, 2 DT)lO7.%&F#&7866 ) ; :CJ(,<& 3 @ "7C*-  F 1";.M" ...44 l6>/ K&&&,4AB9 9 @&P'A#&@#J FG 9=rrv)r ceZdZfdZxZS)NativeIOcft|tr|jd}t||y)Nr&)runicoder!superr)rr(rs rrzNativeIO.write}s'!W%HHW% GM! r)r$r%r&r __classcell__)rs@rr^r^|s   rr^ct|dS)Nr)hasattr) maybefiles r _is_file_likerfs 9g &&rc|rtd|t|||du}|j|jt |r|j ||yt }|j |||j} t|d5}|jt|dz|k7rt ddd|r tdy#1swYxYw#t$rd|tjfz} t| d 5}|j|dddn #1swYnxYw tj| |Yy#t$r/tj |tj| |YYywxYwwxYw) Nz generating )rzTrrz(already up-to-date)Fz%s.~%dw)printrvrrrfrr^getvaluerreadr2OSErrorrgetpidrrenameunlink) rxryr target_fileverbose recompilerroutputf1tmp_files r_make_c_or_py_sourcervsn ./C.6$.>AJ!!#""$[!$$[(; A  H- ZZ\F +s # rwws6{Q'61 2   ( )     {BIIK88 (C  B HHV     - IIh , - IIk " IIh , - sZ C"'CC"CC"".F D+" F +D4 0F 8E4FF FF c(|Jt|||||Srrv)rxryr target_c_filerqs r make_c_sourcerzs&    [(M ' ))rc t||d||Srrx)rxrytarget_py_filerqs rmake_py_sourcer}s [$ ' ))rc|jd} tjtjj|g|dd|dxx|z cc<tjj|g||fS#t $rY:wxYw)Nrr)rrmakedirsrrPrl) outputdirmodname extensionpartss r_modname_to_filersz MM# E  BGGLL8U3BZ89 "II 77<< *E *E 11    s6A88 BBc`t||}|j|||ft||||Sr)rr^setattr) patchlistclsrnew_metholds r _patch_methrs4 #t C c4%& Cx JrcFt|D]\}}}t|||yr)reversedr)rrrold_meths r_unpatch_methsrs)' 2%T8T8$%rctjdk(rddlm}|t ||ddtjdk(rddlm}fd}t ||d |yy) Nr r) MSVCCompiler_remove_visual_c_refc|Srr')r manifest_files rrz&_patch_for_embedding..sMrdarwin) CCompilercd|jvrDt|j|_|jjd}d|j|<|g|i|S)Nz-bundlez -dynamiclib) linker_sorr)rrkwdsrold_link_shared_objects rmy_link_shared_objectz3_patch_for_embedding..my_link_shared_objectsVDNN*!%dnn!5NN((3$1q!)$>>> >rlink_shared_object)sysplatformcffi._shimmed_dist_utilsrrr)rrrrrs @r_patch_for_embeddingrs` ||w :  #  <1GA C ||x6 ? "-Y -A-B"D rcddlm}jdr<ddtjdk(rdz ntjdk(rdz nd z t ||d fd y) Nr) build_extz.*rr z.dllrz.dylibz.soget_ext_filenamecSrr')rext_nametargets rrz#_patch_for_target..svr)rrendswithrrr)rrrs ` r_patch_for_targetrsf2t <<7 " f F \\X % h F eOF 9&8-/rc  t|ts|jd}|jr|j | |m|rt |r t d|jdu} | r|j| |5t|||\}}|r|g|z}tjj|}n|}| | rd|z} nd} | rtj||fi| }nd}t|||||}|rg}tj } | r t#|| dk7r t%|| |r7|dk(rd}nd}t'|d tjj)|tj*|tj,d||| }tj*|t/||S||fS|t||d \}}t1||||}|r|Sd|fS#tj*|t/|wxYw) Nr&zGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r)rqrzthe current directory isz setting the current directory tor0z.py)rrr!_windows_unicode_apply_windows_unicoderfrDr_apply_embedding_fixrrrrPr get_extensionrzgetcwdrrriabspathchdircompilerr})rxryrtmpdircall_c_compilerc_filesource_extensionextradircompiler_verboserdebuguses_ffiplatformr embeddingr ext_c_fileextupdatedrcwdmsgoutputfilenamers r recompilers k3 '!((1   ""4( }V489 9^^4/   $ $T * >,V[-=?MFE! U*u-JJ >+- ++J LtLCC[(F(8: I))+C *(3S=%i8#}8@S"''//&*ABC !,!4!4S#5Eu"N y)! !<  >(eDIFA k6)9; M=  y)s BG"G:rQ) rTNz.cNrNNT)%iorr sysconfigr7rrerrorr cffi_opcoder{rr/get_config_varFREE_THREADED_BUILDr version_inforrr)rArTrprvStringIOr^BytesIOrfrvrzr}rrrrrrr'rrrs< $ .i../@ALLG+.s/?/?&/H.##v-L,+Js/?/?7/J 11 ))8##:??B K Km=m=`'t{{H2:: '>) )2 %D./"GK;?59#C!r