YL iddlZddlZddlZddlZddlmZmZddlmZddl dZ dZ dZ ejd k7xs ejd kxsejd k\xrejd  ZGd dZGddZGddZGddZGddZGddZejdk\r ej.ZnGddej2ZdZdZd&dZd&dZd Zd!Zd"Z d#Z!d$Z" d'd%Z#y)(N) ffiplatformmodel)VerificationError)*i&i'i(win32)r)r Py_GIL_DISABLEDc eZdZddZdZdZy) GlobalExprcJ||_||_||_||_||_yN)nameaddresstype_opsize check_value)selfrrrrrs U/mnt/ssd/data/python-lab/Trading/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!rrr r s'J1rr c$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,r4r r)r size_exprs ras_field_python_exprzFieldExpr.as_field_python_expr/sj    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) rrrBrCrrDrErFrGs 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 */ r6z},) rrBrCrrDrFr1rGrErs rrzStructUnionExpr.as_c_exprFs#tyy$//4::&NN&*ii@At55s4==7IJJK26;-G  DFG  rct|jt}|jDcgc]}|j }}dt |j t ||jddj|dScc}w)Nz(b'',,)) evalrCG_FLAGSrGr>r<rBrjoin)rrCc_field fields_exprs rr!zStructUnionExpr.as_python_exprMstTZZ)&*mm5"3355 5 doo . e $ II HH[ ! # #5sBNr"r&rrr@r@:s !#rr@ceZdZdZdZdZy)EnumExprcJ||_||_||_||_||_yrrrBrsignedallenums)rrrBrrVrWs rrzEnumExpr.__init__Xs% $    rczd|j|j|j|j|jfzS)Nz1 { "%s", %d, _cffi_prim_int(%s, %s), "%s" },rUrs rrzEnumExpr.as_c_expr_s9!%DOO!%DKK!HH Irc tttttt t td|j|jf}dt|jt||jd|jdS)N))rr)rr)r)rZr)r)r[r)r)r\rr7z\x00r8) PRIM_UINT8 PRIM_INT8 PRIM_UINT16 PRIM_INT16 PRIM_UINT32 PRIM_INT32 PRIM_UINT64 PRIM_INT64rrVr<rBrrW)r prim_indexs rr!zEnumExpr.as_python_exprdsa)***  ii$ & &7t%G%6z%B%)YY ? ?rNr"r&rrrSrSWs!I ?rrSceZdZdZdZdZy) TypenameExprc ||_||_yrrrB)rrrBs rrzTypenameExpr.__init__ps $rc8d|j|jfzS)Nz { "%s", %d },rirs rrzTypenameExpr.as_c_exprts DIIt#???rcLdt|j|jdS)Nr7r8)r<rBrrs rr!zTypenameExpr.as_python_exprws-doo> JJrNr"r&rrrgrgos%@KrrgceZdZdZdKdZdZdZdZdZdZ 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)rrorprqs rrzRecompiler.__init__s & 0$ rc:t|j||_yr)maxrs)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_functionr1appendargs isinstancerVoidTypeBasePrimitiveType PointerTypeStructOrUnionOrEnumFunctionPtrType is_array_typelengthvalues_struct_unions_enums StructOrUnionEnumType enumerategetattr __class__r#CffiOptuple)r all_declsrtp1imethodr9s 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)rq 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_functionrfldtypesro_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)Nr/r_generate_cpy_rz"not implemented in recompile(): %r) ror _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::rrzrr) _lsts ALL_STEPSset_seen_struct_unionsr_add_missing_struct_unionssortrrrr1rr)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)N )_fwrite)rwhats r_prntzRecompiler._prnts  dTk"rct|jr|J|j|y|J|j||yr)rqwrite_py_source_to_fwrite_c_source_to_f)rfpreambles rwrite_source_to_fzRecompiler.write_source_to_fsA  # ##  % %a (' ''  $ $Q 1rcttjjtjj t |d}|j }|j|S)Nr)openospathrOdirname__file__ readlinesclose)rfilenamegliness r_rel_readlineszRecompiler._rel_readlines!sC bggooh7BC H    rc  ||_|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|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]} | d0k7s |d1| | | fz|jj4r |d2n|d3|d4t3|j"fzd}|j<dkDs|jj|dz}|d5|z|d||d6|d7|d||d|d8|d9|d:|d;|dzr|d<|d=|d>|d?|j>z|d@|dA|dB|d|dC|dD|dE|dF|dG|dH|dI|dJ|dK|dL|dL|d|d8|dM|dN|d;|dO|j|j>fz|dC|d|d8|dP|dN|d;|dQ|j|j>fz|dC|d||d6|dR|dd|_ycc}}w#t8$rt;d%|jd&|d'wxYw)SNz#define _CFFI_USE_EMBEDDINGz#define _CFFI_NO_LIMITED_APIz_cffi_include.hz#include "parse_c_type.h" zparse_c_type.hrr6.z#define _CFFI_MODULE_NAME ""z1static const char _CFFI_PYTHON_STARTUP_CODE[] = {z0 };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>/************************************************************/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[] = {rZ 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;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# endifPyInit_(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) rrro _embeddingUSE_LIMITED_APIrindexrOrpr_print_string_literal_in_arrayrwVERSION_EMBEDDEDdictrrrr _get_c_namerr_seen_constantsrrrr1_included_ffis_assigned_sourcerr _num_externpyrs)rrrprntrrbase_module_namertypeindex2typer9rEnumsrrrffi_to_includeincluded_module_nameincluded_sourcerCs rrzRecompiler.write_c_source_to_f'szz 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 - => ./ ()   X S  ! "# *+ 8H JK Y (8 :; Z Z *+  "2 45 S  D   dmmH-- . S  W   / 12 S  =   dmmA-- . S  X   +, X wOH&8+!HHn7888s Y &Y&Y7c(t|trd|dSt|ttfrR|Dcgc]}|j |}}t |dk(r|j dddj|dS|jScc}w)Nr7r8rr6(rKrL) rrlistr_to_pyr1rrOr!)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&rZrrrzMnot implemented yet: ffi.include() of a C-based ffi inside a Python-based ffizfrom %s import ffi as _ffi%dzffi = _cffi_backend.FFI('rJz _version = 0x%x,z _types = r6rKrrz _zs = z _includes = (rz_ffi%dz,),rL)rrr1rorrangerrrrprsrrr rrOrrrrr)rrr  num_includesrrrrr9 types_lstrr rrs 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._gettypenumst$$rc Nd}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|tjst|tjr;|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)Nr6_Bool_cffi_to_c_intz, %srz)_cffi_to_c_doublez )_cffi_to_c_r/rchar16_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 == (rLz && PyErr_Occurred()))rrris_complex_typeis_integer_typerUnknownFloatType get_c_namereplacerwVERSION_CHAR16CHAR32r"_convert_funcarg_to_c_ptr_or_arrayrrrrr4) 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 U667U445 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)|)Nrz_cffi_from_c_int(rrLz_cffi_from_c_double( long doubler/rr! _cffi_from_c_rz/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r8z ' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d)))rrrr(rr)r'r+rwr,rrr ArrayTyperrfldnames TypeErrorrrr4)rrvarcontextr3s r_convert_expr_from_czRecompiler._convert_expr_from_cXs 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_type{s  T%;<|j|j|jj|j|yy)Norigin unknown_type) approxname)rS named_ptr) rHrOr _struct_ctxrrrNamedPointerTypetotyperGs 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)rrellipsisrqrGs 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%drvoidr/r6_cffi_d_rrLstatic 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)rqrrrrZ_generate_cpy_constant_declrr1rrrr*rOabirgrrr:rrr5rDinsert void_type)rrrr numargsargname argumentscall_argumentsrCrrrepr_argumentsrlname_and_arguments result_codeargr8r9r result_declrngfreelinerj 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)rZrq_generate_cpy_constant_ctxrrr1rOP_DLOPEN_FUNCOP_CPYTHON_BLTN_NOP_CPYTHON_BLTN_OOP_CPYTHON_BLTN_Vrrr r)rrrrBro meth_kinds r_generate_cpy_function_ctxz%Recompiler._generate_cpy_function_ctx;s ;;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)->rL%s[0])rrr?rr*rr)r tp_struct field_nametp_field actual_lengthptr_struct_nametp_items rrzRecompiler._field_typeQsr h 0$OOM%"+"6"6s";#Z!1 &&y'J2F'/}}6Gw >Hrc|j||jr'|jD]}|j|yyr)rrqanonymous_struct_fields_struct_collecttype)rrfldtypes rrzRecompiler._struct_collecttype]sD 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;rr6z (void)((p->z) | 0); /* check that 'rz' is an integer */rz[0]rfz*tmpzfield %rrz = &p->z; (void)tmp; }z /* %s */rzstruct _cffi_align_z { char x; z y; };) rrrr(rrr?rrr*rr) rrr3rSr  checkfuncnamefnameftyper,fqualrs r _struct_declzRecompiler._struct_decldsq ;;  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 'rr8rz %d /* bits */z (size_t)-1z sizeof(((rrrLz(size_t)(((char *)&((z)4096)->z) - (char *)4096)z offsetof(r6rrz (size_t)-2unnamedz sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)rr)!rrr UnionTyperrrorrpartialanyrpackedr4rOrrr_check_not_opaquerr:r;r?rr*r(rr1rextendr@rr7)rrr3rSrTrBreason_for_not_expandingrCrGrfldnamerr,rr9roffsetrFalignrEs rrUzRecompiler._struct_ctxs9__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()))rrr?rrrrA)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 hqkrrzzinternal inconsistency: z* is partial but was not seen at this point$r_IO_FILEFILE) rrrrrrr4r startswithisdigit forcenamerOrU)rrrorderrSs 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)rrGs r _generate_cpy_struct_collecttypez+Recompiler._generate_cpy_struct_collecttypes   $rcb|jd}d|vr||jddfS|d|zfS)Nr6r/r)r*r+)rrr3s r _struct_nameszRecompiler._struct_namess< b! %<%--S11 1#+% %rcH|j|g|j|yr)rrrGs r_generate_cpy_struct_declz$Recompiler._generate_cpy_struct_decls""6t11"56rcH|j|g|j|yr)rUrrGs r_generate_cpy_struct_ctxz#Recompiler._generate_cpy_struct_ctx s"5d0045rct|tjr|j||y|j |yr)rrr_generate_cpy_enum_collecttyperrGs r#_generate_cpy_anonymous_collecttypez.Recompiler._generate_cpy_anonymous_collecttypes. b%.. )  / /D 9  $ $R (rct|tjr|j|y|j ||d|zyNtypedef_)rrr_generate_cpy_enum_declrrGs r_generate_cpy_anonymous_declz'Recompiler._generate_cpy_anonymous_decls5 b%.. )  ( ( ,   b$ T(9 :rct|tjr|j||y|j ||d|zyr)rrr _enum_ctxrUrGs 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 'r8_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 = rd)rrr7rr*)ris_intrrcategoryrr funcnames r_generate_cpy_constzRecompiler._generate_cpy_const&s  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(rqrrrrrs r"_generate_cpy_constant_collecttypez-Recompiler._generate_cpy_constant_collecttypeDs.##%..  ! !" %/rcJ|j}|j|||yr)r(rrs rrkz&Recompiler._generate_cpy_constant_declIs"##%   r2rc|js!|jrttd}n4|jrt}nt }|j |}t||}|jdjt|d|z|y)Nrr_cffi_const_%s) rqr(rOP_CONSTANT_INTOP_DLOPEN_CONST OP_CONSTANTrrrr )rrrr const_kindrBs rrz%Recompiler._generate_cpy_constant_ctxMsy$$););)=_b1G$$, ( ,JZ4G 8## t-4g > @rc&|j|yr)rrGs rrz)Recompiler._generate_cpy_enum_collecttype]s b!rcJ|jD]}|jd|y)NT) enumeratorsr)rrr enumerators rrz"Recompiler._generate_cpy_enum_decl`s%.. 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) <= 0rrKr)rrOP_ENUMrqcheck_not_partialzipr enumvaluesrrr build_baseinttyperosizeofintcastrOrSr) rrr3rBrr enumvaluerrVbasetprWs rrzRecompiler._enum_ctxds6__R( "%   "%(%G 3 !J JJx ' ':'7*'Dg'02 3 3  E!1$:O:O%'D$u,F))$((B7F88??6*DTXX]]6267!;>+,rcyrr&rGs r_generate_cpy_macro_collecttypez*Recompiler._generate_cpy_macro_collecttyperMrc@|dk(rd}n|}|jd||y)NrTr)r)rrrrs r_generate_cpy_macro_declz#Recompiler._generate_cpy_macro_decls( ;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)rqrrrrrr )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(rLr)rrr?rrFr)rr global_namerrs rrFzRecompiler._global_typesY b%// *IIM%9D F '';1FGG-8B rcF|j|j||yr)rrFrGs 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) Nr6&z *_cffi_var_rrbrrz return rr&r) rrFrrr?rrr*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) rFrrq OP_GLOBAL_VAROP_GLOBAL_VAR_Frrr r)rrrrBr9s r_generate_cpy_variable_ctxz%Recompiler._generate_cpy_variable_ctxse   r4 (__R(  B B 8## t^d2F2z4J K Mrc^t|tjsJ|j|yr)rrrrrGs 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)"Nrrez (int)sizeof(r6rLz3static struct _cffi_externpy_s _cffi_externpy__%s =rrr0z , 0, 0 };r_z a%drr`r __stdcallz_cffi_stdcall cXt|tjxr|jdk(S)Nr=)rrrirrs rmay_need_128_bitsz9Recompiler._extern_python_decl..may_need_128_bitss(r5#6#67-GG}, .rr\z!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)rrrgrrr*rprrrrOrlrur1rrr )rrr tag_and_spacer size_of_resultrCrqrrrvrsrtr  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)NrbrrGs r _generate_cpy_extern_python_declz+Recompiler._generate_cpy_extern_python_decls   T95rc*|j||dy)NzCFFI_DLLEXPORT rrGs r#_generate_cpy_dllexport_python_declz.Recompiler._generate_cpy_dllexport_python_decl s   T+<=rc*|j||dy)Nr6rrGs r'_generate_cpy_extern_python_plus_c_declz2Recompiler._generate_cpy_extern_python_plus_c_decl s   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) rqrrZr4rrOP_EXTERN_PYTHONrrr )rrrrBrs 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 d|j dD]}|}tdturtt|}nt|dd}|d |zjd }|D]#}t|d k\r ||d }|d |fzz }%||y#t $rd|z}YwxYw) Nz=// # NB. this is not a string because of a size limit in MSVCzutf-8asciis# -*- encoding: utf8 -*- Tz//rrz// r6Lz%d,) rrbytesencodedecodeUnicodeDecodeError splitlinesrmapordrrstripr1)rsr linerE printed_linecs rrz)Recompiler._print_string_literal_in_arrays zz LM!U#!A HHW  2 HHW LL& DGDzU"3~ .2. %'/))+ ,L -|$*&#%L ,  -   " 2-1A 2s C..C?>C?cFttt|j|<yr)r OP_PRIMITIVE PRIM_VOIDrrrrs r_emit_bytecode_VoidTypez"Recompiler._emit_bytecode_VoidType=s!' i!@rcdt|j}tt||j|<yr)PRIMITIVE_TO_INDEXrrr+r)rrrres r_emit_bytecode_PrimitiveTypez'Recompiler._emit_bytecode_PrimitiveType@s%'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_UnknownIntegerTypeDs5$&77BGGRWW>"( a!8rcxd|jd|jd}tt||j|<y)Nz_cffi_prim_float(sizeof(z) * (((z6)1) / 2) * 2 /* integer => 0, float => 1 */ )r3r4s r_emit_bytecode_UnknownFloatTypez*Recompiler._emit_bytecode_UnknownFloatTypeJs/ 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 rZzabi=)r OP_FUNCTIONrrgrrrrrir1r:rrZrlr4OP_FUNCTION_END)rrrr realindexrCs r_emit_bytecode_RawFunctionTypez)Recompiler._emit_bytecode_RawFunctionTypePs!' T__RYY5O!P  77 C,I !c5#6#6755c5A-3GY-GDOOE* QJE BKK  66 vv$ )bff*>??!'!?rcltt|j|j|j|<yr)r OP_POINTERrrWrr-s r_emit_bytecode_PointerTypez%Recompiler._emit_bytecode_PointerTypecs$!' DOOBII4N!Orcx|j}tt|j||j|<yr)rrr>rr)rrrraws r_emit_bytecode_FunctionPtrTypez)Recompiler._emit_bytecode_FunctionPtrTypeis.  "!' 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_ArrayTypems__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_StructType{s'**2. !'!Frc\|j|}tt||j|<yr)rrrr)rrr enum_indexs r_emit_bytecode_EnumTypez"Recompiler._emit_bytecode_EnumTypes$[[_ !'!<rF)r6r)NconstN)Vr#r$r%r rrwrrrrrrrrrrrrrr5r:r-rDrHrJrLrOrXr[r}rrrrrUrrr_generate_cpy_union_collecttyperr_generate_cpy_union_declr_generate_cpy_union_ctxrrrrrrkrrrrrrrrrFrrrr*_generate_cpy_dllexport_python_collecttype._generate_cpy_extern_python_plus_c_collecttyperrrrr"_generate_cpy_dllexport_python_ctx&_generate_cpy_extern_python_plus_c_ctxrr.r1r5r7r<r?_emit_bytecode_ConstPointerType_emit_bytecode_NamedPointerTyperBrGrK_emit_bytecode_UnionTyperNr&rrrmrm~sM% 081t <-&&HI,>#2 kZ"0h%+(ZK *F=< F+& `D2, 2 DT)lO7.%&F#&7866 ) ; :CJ(,<& 3 @ "7C*-  F 1";.M" ...44 l6>/ K&&&,<AB9 9 @&P'A#&@#J FG 9=rrm)r ceZdZfdZxZS)NativeIOcnt|tr|jd}tt||y)Nr)runicodersuperr\r)rr&rs rrzNativeIO.writes*!W%HHW% (D ' *r)r#r$r%r __classcell__)rs@rr\r\s  + +rr\ct|dS)Nr)hasattr) maybefiles r _is_file_likerds 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 )rqTrrz(already up-to-date)Fz%s.~%dw)printrmrrrdrr\getvaluerreadr1IOErrorrgetpidrrenameOSErrorunlink) rorpr target_fileverbose recompilerroutputf1tmp_files r_make_c_or_py_sourcerusn ./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|||||Srru)rorpr target_c_filerps r make_c_sourcerys&    [(M ' ))rc t||d||Srrw)rorptarget_py_filerps rmake_py_sourcer|s [$ ' ))rc|jd} tjtjj|g|dd|dxx|z cc<tjj|g||fS#t $rY:wxYw)Nrr)rrmakedirsrrOrm) outputdirmodname extensionpartss r_modname_to_filersz MM# E  BGGLL8U3BZ89 "II 77<< *E *E 11    s6A88 BBc`t||}|j|||ft||||Sr)rrsetattr) 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) Nrr) 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.*rrz.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) NrzGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r)rprzthe current directory isz setting the current directory tor/z.py)rrr_windows_unicode_apply_windows_unicoderdrAr_apply_embedding_fixrrrrOr get_extensionrygetcwdrrrgabspathchdircompilerr|)rorprtmpdircall_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:rO) rTNz.cNrNNT)$iorr sysconfigr6rrerrorr cffi_opcoderrrr,r version_infoget_config_varrr r(r@rSrgrmStringIOr\BytesIOrdruryr|rrrrrrr&rrrs# $ LLG+.s/?/?&/H.##v-C/y//0ABB11 ))8##:??0 K KD=D=N(t{{H+2::+ '>) )2 %D./"GK;?59#C!r