a ‚oeŒ­ã@sDddlZddlmZddlmZddlmZGdd„deƒZdZ dS) éNé)Úmodel©ÚVerificationError)Ú_imp_emulationc@seZdZdZdZdd„Zdd„Zdd„Zd d „Zdnd d „Z dd„Z dd„Z dd„Z dodd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„ZeZeZeZeZeZd)d*„Zd+d,„Zd-d.„ZeZd/d0„Z eZ!d1d2„Z"d3d4„Z#d5d6„Z$d7d8„Z%eZ&d9d:„Z'd;d<„Z(d=d>„Z)d?d@„Z*dAdB„Z+dCdD„Z,dEdF„Z-dGdH„Z.eZ/dIdJ„Z0dKdL„Z1dMdN„Z2dOdP„Z3dpdSdT„Z4dUdV„Z5dWdX„Z6eZ7eZ8eZ9dqdYdZ„Z:d[d\„Z;drd^d_„Zd`da„Z?dbdc„Z@ddde„ZAeZBeZCeZDeZEdfdg„ZFdhdi„ZGeZHeZIdjdk„ZJdldm„ZKdS)sÚVCPythonEngineÚxTcCs||_|j|_i|_i|_dS©N)ÚverifierÚffiÚ_struct_pending_verificationÚ_types_of_builtin_functions)Úselfr ©rú1C:\Program Files\Certbot\pkgs\cffi\vengine_cpy.pyÚ__init__szVCPythonEngine.__init__cCsdSr r)rÚkwdsrrrÚpatch_extension_kwdssz#VCPythonEngine.patch_extension_kwdscCsPzt ||¡\}}}Wnty*YdS0|dur<| ¡|d|vrLdS|S©Nr)ÚimpÚ find_moduleÚ ImportErrorÚclose)rZ module_nameÚpathZ so_suffixesÚfÚfilenameZdescrrrrrs  zVCPythonEngine.find_modulecCsi|_| d¡dS)NZ collecttype)Ú _typesdictÚ _generate©rrrrÚ collect_types%szVCPythonEngine.collect_typesÚcCs|j |d¡dS)NÚ )Z_fÚwrite)rZwhatrrrÚ_prnt)szVCPythonEngine._prntcCs |j|Sr )r)rÚtyperrrÚ _gettypenum,szVCPythonEngine._gettypenumcCs8t|tjƒr|jdkr4||jvr4t|jƒ}||j|<dS)Nú long double)Ú isinstancerÚ PrimitiveTypeÚnamerÚlen)rÚtpZnumrrrÚ_do_collect_type0s ÿþ zVCPythonEngine._do_collect_typecCsê| ¡ddg|_|j}|tƒ|ƒ||jjƒ|ƒ| d¡| ¡|ƒ|dƒ| d¡|dƒ|dƒ|dƒ|ƒ|j ¡}|jd}|d ƒ|ƒ|d ƒ|d ƒ|d |ƒ|d ƒ|dƒ|dƒ|dƒ|dƒ|ƒ|dƒ|d|ƒ|dƒ|dƒ|dƒ|dƒ|dƒ|d|fƒ|dƒ|dƒ|dƒ|dƒ|dƒ|ƒ|dƒ|ƒ|dƒ|d|ƒ|dƒ|dƒ|d|ƒ|dƒ|d ƒ|d!|fƒ|d ƒ|d"ƒ|dƒ|ƒ|d#ƒdS)$Nz ((void)lib,0)Údeclz&static PyMethodDef _cffi_methods[] = {Úmethodz3 {"_cffi_setup", _cffi_setup, METH_VARARGS, NULL},z) {NULL, NULL, 0, NULL} /* Sentinel */z};Fz#if PY_MAJOR_VERSION >= 3z.static struct PyModuleDef _cffi_module_def = {z PyModuleDef_HEAD_INIT,z "%s",z NULL,z -1,z _cffi_methods,z NULL, NULL, NULL, NULLZPyMODINIT_FUNCzPyInit_%s(void)ú{z PyObject *lib;z+ lib = PyModule_Create(&_cffi_module_def);z if (lib == NULL)ú return NULL;z# if (%s < 0 || _cffi_init() < 0) {z Py_DECREF(lib);ú }z return lib;ú}z#elsez init%s(void)z+ lib = Py_InitModule("%s", _cffi_methods);z return;z! if (%s < 0 || _cffi_init() < 0)z return;z#endif) rÚ_chained_list_constantsr#Úcffimod_headerr ZpreamblerÚ_generate_setup_customÚget_module_name)rÚprntÚmodnameZ constantsrrrÚwrite_source_to_f7st          z VCPythonEngine.write_source_to_fNc s”t ¡zÂttdƒrt ¡}zŒz6ttdƒr<|dur­sÿz/VCPythonEngine.load_library..csg|] }ˆ|‘qSrr©r<Úi)Ú revmappingrrr?¯ócs&eZdZ”Z”jZgZ‡fdd„ZdS)z/VCPythonEngine.load_library..FFILibrarycsˆjt|jƒSr )Ú _cffi_dirÚlistÚ__dict__r)Ú FFILibraryrrÚ__dir__»sz7VCPythonEngine.load_library..FFILibrary.__dir__N)Ú__name__Ú __module__Ú __qualname__Z_cffi_python_moduler Z _cffi_ffirDrHr)rGÚmodulerrrrG·srGrz0reimporting %r might overwrite older definitionsZloaded©Úlibrary)rÚ acquire_lockÚhasattrÚsysr:r;Z load_dynamicr r6ZmodulefilenamerrÚ release_lockÚ_loadÚdictrÚitemsÚranger*rEÚmapr Ú_get_cached_btypeÚobjectZ _cffi_setupÚwarningsÚwarnZ_cffi_original_ffir Z_cffi_types_of_builtin_funcs)rÚflagsZprevious_flagsÚeÚerrorÚlstrNrZr)rGrLrBrrÚ load_library’sF   ÿ   ÿ  ÿÿzVCPythonEngine.load_librarycCs$dd„|jjj ¡Dƒ}| ¡|S)NcSsg|]\}\}}||f‘qSrr)r<r=r+Zqualrrrr?ÍrCz4VCPythonEngine._get_declarations..)r Z_parserZ _declarationsrUÚsort)rr_rrrÚ_get_declarationsÌs  ÿz VCPythonEngine._get_declarationsc Csž| ¡D]�\}}| dd¡\}}zt|d||fƒ}WntyTtd|ƒ‚Yn0z|||ƒWqty–}zt ||¡‚WYd}~qd}~00qdS)Nú rz_generate_cpy_%s_%sznot implemented in verify(): %r)rbÚsplitÚgetattrÚAttributeErrorrÚ ExceptionrÚattach_exception_info)rÚ step_namer)r+ÚkindÚrealnamer.r]rrrrÒsÿ  ÿ  zVCPythonEngine._generatec Ks„| ¡D]v\}}| dd¡\}}t|d||fƒ}z||||fi|¤ŽWqty|} zt | |¡‚WYd} ~ qd} ~ 00qdS)Nrcrz _%s_cpy_%s)rbrdrergrrh) rrLrirr)r+rjrkr.r]rrrrSás zVCPythonEngine._loadcCsdSr r©rr+r)rrrÚ_generate_nothingësz VCPythonEngine._generate_nothingcKsdSr r©rr+r)rLrrrrÚ _loaded_noopîszVCPythonEngine._loaded_noopcCs*d}t|tjƒrT| ¡r2|jdkr2d}d|j}nd| d¡|j dd¡f}d}n”t|tjƒrt| ||||¡dSt|tj tj fƒr²|  d ||  |¡|f¡|  d |¡dSt|tj ƒràd | d¡}d |  |¡}d }nt|ƒ‚|  d||||f¡|  d|| d¡|f¡|  d |¡dS)Nr Ú_BoolZ_cffi_to_c_intz, %sz(%s)_cffi_to_c_%srcÚ_z-1z6 if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)z %s;z(%s)_cffi_to_c_pointerz, _cffi_type(%d)ZNULLz %s = %s(%s%s);z' if (%s == (%s)%s && PyErr_Occurred()))r'rr(Úis_integer_typer)Ú get_c_nameÚreplaceÚ PointerTypeÚ"_convert_funcarg_to_c_ptr_or_arrayÚ StructOrUnionÚEnumTyper#r%ÚFunctionPtrTypeÚNotImplementedError)rr+ÚfromvarÚtovarÚerrcodeZextraargZ converterZerrvaluerrrÚ_convert_funcarg_to_cós<    ÿ ÿÿ  ÿz$VCPythonEngine._convert_funcarg_to_ccCs.t|tjƒr*| d¡| d¡| d¡dS)NzPy_ssize_t datasizez-struct _cffi_freeme_s *large_args_free = NULLzIif (large_args_free != NULL) _cffi_free_array_arguments(large_args_free);)r'rruÚadd)rr+Ú localvarsÚ freelinesrrrÚ_extra_local_variabless   z%VCPythonEngine._extra_local_variablescCs~| d¡| d| |¡||f¡| d¡| d|f¡| d| |¡||f¡| d¡| d|¡| d¡dS) Nz1 datasize = _cffi_prepare_pointer_call_argument(z( _cffi_type(%d), %s, (char **)&%s);z if (datasize != 0) {zE %s = ((size_t)datasize) <= 640 ? 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;r1)r#r%)rr+r{r|r}rrrrvs  ÿ ÿÿ z1VCPythonEngine._convert_funcarg_to_c_ptr_or_arraycCst|tjƒr`| ¡r,|jdkr,d||jfS|jdkrLd|j dd¡|fSd|| |¡fSn®t|tjtjfƒr„d|| |¡fSt|tj ƒrªd|| t |j ¡¡fSt|tj ƒræ|j durÔt d | ¡|fƒ‚d || |¡fSt|tjƒ�rd|| |¡fSt|ƒ‚dS) Nrpz_cffi_from_c_int(%s, %s)r&z_cffi_from_c_%s(%s)rcrqz/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))z!'%s' is used as %s, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d)))r'rr(rrr)rtr%ruryÚ ArrayTypeÚitemrwÚfldnamesÚ TypeErrorÚ _get_c_namerxrz)rr+ÚvarÚcontextrrrÚ_convert_expr_from_c+s:   ÿ ÿ ÿ  ÿ ÿ ÿz#VCPythonEngine._convert_expr_from_ccCsHt|tjƒsJ‚|jr"| |¡n"|jD]}| |¡q(| |j¡dSr )r'rryÚellipsisr,ÚargsÚresult)rr+r)r$rrrÚ"_generate_cpy_function_collecttypeRs    z1VCPythonEngine._generate_cpy_function_collecttypec Cs¸t|tjƒsJ‚|jr(| d||¡dS|j}t|jƒ}|dkrFd}n|dkrTd}nd}|dƒ|d||fƒ|d ƒd |}t|jƒD] \}}|d |  d ||¡ƒqŠt ƒ} t ƒ} |jD]}|  || | ¡q¾t | ƒD]} |d | fƒqÚt|j tjƒ�s*d } d|}|d |j   d|¡ƒ|dƒnd} t|jƒdk�r˜tt|jƒƒ} | D]}|d|ƒ�qP|ƒ|dd||d dd„| Dƒ¡fƒ|dƒ|ƒt|jƒD](\}}| |d|d|d¡|ƒ�q¨|dƒ|dƒ|d| |d dd„tt|jƒƒDƒ¡fƒ|d ƒ|d!ƒ|ƒ|d"ƒ|dk�r>|d#ƒ| �r~|d$| |j d%d&¡ƒ| D]}|d'|ƒ�q`|d(ƒn(| D]}|d'|ƒ�q‚|d)ƒ|d*ƒ|d+ƒ|ƒdS),NFrZnoargrZarg0rŒústatic PyObject *z(_cffi_f_%s(PyObject *self, PyObject *%s)r/zargument of %sú %s;z x%dz result = z result of %sz resultz PyObject *pyresult;r z PyObject *arg%d;z+ if (!PyArg_ParseTuple(args, "%s:%s", %s))ÚOz, cSsg|] }d|‘qS)z&arg%drr@rrrr?ŠrCz>VCPythonEngine._generate_cpy_function_decl..r0zarg%dúx%dz return NULLz Py_BEGIN_ALLOW_THREADSz _cffi_restore_errno();z { %s%s(%s); }cSsg|] }d|‘qS)r’rr@rrrr?—rCz _cffi_save_errno();z Py_END_ALLOW_THREADSú (void)self; /* unused */ú (void)noarg; /* unused */z pyresult = %s;r�z result typez z return pyresult;z Py_INCREF(Py_None);z return Py_None;r2)r'rryr‹Ú_generate_cpy_constr#r*rŒÚ enumeratersÚsetr‚Úsortedr�ZVoidTyperVÚjoinr~rŠ)rr+r)r7ÚnumargsÚargnamer‰rAr$r€r�r-Z result_codeÚrngZfreelinerrrÚ_generate_cpy_function_decl]sŠ    ÿÿ þ ÿ z*VCPythonEngine._generate_cpy_function_declcCsL|jr dSt|jƒ}|dkr"d}n|dkr0d}nd}| d|||f¡dS)NrZ METH_NOARGSrZMETH_OZ METH_VARARGSz {"%s", _cffi_f_%s, %s, NULL},)r‹r*rŒr#)rr+r)ršÚmethrrrÚ_generate_cpy_function_method­s z,VCPythonEngine._generate_cpy_function_methodcCs.|jr dSt||ƒ}t|||ƒ||j|<dSr )r‹reÚsetattrr )rr+r)rLrNÚfuncrrrÚ_loaded_cpy_function»s   z#VCPythonEngine._loaded_cpy_functioncCs ||jksJ‚| |d|¡dS©NÚstruct©r)Ú_generate_struct_or_union_declrlrrrÚ_generate_cpy_struct_declÆsz(VCPythonEngine._generate_cpy_struct_declcCs| |d|¡dSr£©Ú _generate_struct_or_union_methodrlrrrÚ_generate_cpy_struct_methodÉsz*VCPythonEngine._generate_cpy_struct_methodcCs| |d||¡dSr£©Ú_loading_struct_or_union©rr+r)rLrrrÚ_loading_cpy_structËsz"VCPythonEngine._loading_cpy_structcKs| |¡dSr ©Ú_loaded_struct_or_unionrnrrrÚ_loaded_cpy_structÍsz!VCPythonEngine._loaded_cpy_structcCs ||jksJ‚| |d|¡dS©NÚunionr¥rlrrrÚ_generate_cpy_union_declÑsz'VCPythonEngine._generate_cpy_union_declcCs| |d|¡dSr²r¨rlrrrÚ_generate_cpy_union_methodÔsz)VCPythonEngine._generate_cpy_union_methodcCs| |d||¡dSr²r«r­rrrÚ_loading_cpy_unionÖsz!VCPythonEngine._loading_cpy_unioncKs| |¡dSr r¯rnrrrÚ_loaded_cpy_unionØsz VCPythonEngine._loaded_cpy_unionc Cs|jdurdSd||f}d||f}d||f ¡}|j}|d||fƒ|dƒ|dƒ|dƒ| ¡D]�\}} } } t| tjƒrŒ|  ¡s”| dkr¢|d |ƒqlz$|d | jd d || d �|fƒWqlt yú} z|dt | ƒƒWYd} ~ qld} ~ 00ql|dƒ|dƒ|d|fƒ|dƒ|d|ƒ|dƒ|d|ƒ|dƒ| ¡D]h\}} } } | dk�rn�qT|d||fƒt| tj ƒ�rª| j du�rª|d|   ¡ƒn|d||fƒ�qT|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|d|fƒ|dƒ|ƒdS) Nz_cffi_check_%s_%sú_cffi_layout_%s_%sú%s %szstatic void %s(%s *p)r/z8 /* only to generate compile-time warnings or errors */z (void)p;rz (void)((p->%s) << 1);z { %s = &p->%s; (void)tmp; }z*tmpzfield %r)Zqualsz /* %s */r2r�z#%s(PyObject *self, PyObject *noarg)z, struct _cffi_aligncheck { char x; %s y; };z static Py_ssize_t nums[] = {z sizeof(%s),z) offsetof(struct _cffi_aligncheck, y),z offsetof(%s, %s),z 0, /* %s */z sizeof(((%s *)0)->%s),z -1z };r“r”z' return _cffi_get_struct_layout(nums);z3 /* the next line is not executed, but compiled */z %s(0);)r…Ústripr#Ú enumfieldsr'rr(rrrsrÚstrrƒÚlengthr‡) rr+Úprefixr)Z checkfuncnameÚlayoutfuncnameÚcnamer7ÚfnameÚftypeÚfbitsizeÚfqualr]rrrr¦Ûs`    ÿÿþ (   z-VCPythonEngine._generate_struct_or_union_declcCs0|jdurdSd||f}| d||f¡dS)Nr¸z {"%s", %s, METH_NOARGS, NULL},)r…r#)rr+r¾r)r¿rrrr©s   ÿz/VCPythonEngine._generate_struct_or_union_methodc CsÊ|jdurdSd||f}t||ƒ}|ƒ}t|tjƒr¨|jr¨|d}|d} |ddd…} |ddd…} | ¡t| ƒt| ƒkr’t|jƒks˜nJ‚| | || f|_nd||f  ¡} || f|j |<dS)Nr¸rréér¹) r…rer'rrwÚpartialZ force_flattenr*Z fixedlayoutrºr ) rr+r¾r)rLr¿ÚfunctionÚlayoutZ totalsizeZtotalalignmentZfieldofsZ fieldsizerÀrrrr¬s   (z'VCPythonEngine._loading_struct_or_unionc Cs|jdurdS|j |¡||jv�rdd„}|j}| |¡}|j |¡\}}||d| |¡dƒ||d| |¡dƒd}| ¡D]v\}} } } | dkrœq†|||| ||¡d|fƒ||ddkrô| | ¡} |||d| | ¡d |fƒ|d7}q†|t |ƒk�sJ‚dS) NcSs||krtd|||fƒ‚dS)Nz'%s (we have %d, but C compiler says %d)r)Z realvalueZ expectedvalueÚmsgrrrÚcheck1s ÿÿz5VCPythonEngine._loaded_struct_or_union..checkrzwrong total sizerzwrong total alignmentrÅzwrong offset for field %rzwrong size for field %r) r…r rXr ÚpopÚsizeofZalignofr»Zoffsetofr*) rr+rËr ZBStructrÉrÀrArÁrÂrÃrÄZBFieldrrrr°*s0    ÿ ÿ z&VCPythonEngine._loaded_struct_or_unioncCs.t|tjƒr| ||d¡n| |d|¡dS©Nr )r'rrxÚ_generate_cpy_enum_declr¦rlrrrÚ_generate_cpy_anonymous_declNs z+VCPythonEngine._generate_cpy_anonymous_declcCst|tjƒs| |d|¡dSrÎ)r'rrxr©rlrrrÚ_generate_cpy_anonymous_methodTs z-VCPythonEngine._generate_cpy_anonymous_methodcCs0t|tjƒr| |||¡n| |d||¡dSrÎ)r'rrxÚ_loading_cpy_enumr¬r­rrrÚ_loading_cpy_anonymousXs z%VCPythonEngine._loading_cpy_anonymouscKs2t|tjƒr$|j|||fi|¤Žn | |¡dSr )r'rrxÚ_loaded_cpy_enumr°rnrrrÚ_loaded_cpy_anonymous^s z$VCPythonEngine._loaded_cpy_anonymousÚconstFc Cst|j} d||f} | d| ƒ| dƒ| dƒ| dƒ|sT| d|pD| d|¡ƒn |dks`J‚|durt| ||¡|s¾|d krŠd |} n|} | d | fƒ| d | |d d¡fƒ|sÊJ‚n | d|ƒ| dƒ| dƒ|�r| dƒ| dƒ| d|fƒ| dƒ| dƒ| dƒ| dƒ| d|ƒ| dƒ| dƒ| dƒ| d|j|ƒ| d|j|<| dƒ| ƒdS)Nz _cffi_%s_%sústatic int %s(PyObject *lib)r/z PyObject *o;z int res;r�z irÖrˆú&z i = (%s);z o = %s;rAz variable typez! o = _cffi_from_c_int_const(%s);z if (o == NULL)ú return -1;z {z PyObject *o1 = o;z8 o = Py_BuildValue("On", o1, (Py_ssize_t)sizeof(%s));z Py_DECREF(o1);z if (o == NULL)z return -1;r1z- res = PyObject_SetAttrString(lib, "%s", o);z Py_DECREF(o);z if (res < 0)ú return %s;ú(lib)r2)r#rsÚ_check_int_constant_valuerŠr3) rÚis_intr)r+ÚcategoryÚvartpÚdelayedÚsize_tooÚ check_valuer7ÚfuncnameZrealexprrrrr•gsR      ÿ   ÿ z"VCPythonEngine._generate_cpy_constcCs&t|tjƒo| ¡}|s"| |¡dSr )r'rr(rrr,©rr+r)rÝrrrÚ"_generate_cpy_constant_collecttype—sz1VCPythonEngine._generate_cpy_constant_collecttypecCs&t|tjƒo| ¡}| |||¡dSr )r'rr(rrr•rärrrÚ_generate_cpy_constant_declœsz*VCPythonEngine._generate_cpy_constant_declcCsž|j}|dkr"|d|||fƒn|d|||fƒ|dƒ|d|ƒ|d|ƒ|dƒ|d|ƒ|d ƒ|d ƒ|d |||fƒ|d ƒ|d ƒdS)Nrz& if ((%s) > 0 || (long)(%s) != %dL) {z1 if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {z char buf[64];z if ((%s) <= 0)z. snprintf(buf, 63, "%%ld", (long)(%s));z elsez7 snprintf(buf, 63, "%%lu", (unsigned long)(%s));z) PyErr_Format(_cffi_VerificationError,z6 "%s%s has the real value %s, not %s",z( "%s", "%s", buf, "%d");rÙr1)r#)rr)r>Z err_prefixr7rrrrܧs,ÿ ÿ  ÿÿz(VCPythonEngine._check_int_constant_valuecCs| dd¡}d||fS)Nú$Z___D_z _cffi_e_%s_%s)rt)rr¾r)rrrÚ_enum_funcname¼s zVCPythonEngine._enum_funcnameÚenumcCs¨|jr&|jD]}|jd|dd�q dS| ||¡}|j}|d|ƒ|dƒt|j|jƒD]\}}| ||d|¡qZ|d|jdƒ|d|jd<|d ƒ|ƒdS) NTF)ràr×r/z enum %s: rÚrÛr2) rÇÚ enumeratorsr•rèr#ÚzipÚ enumvaluesrÜr3)rr+r)r¾Ú enumeratorrãr7Ú enumvaluerrrrÏÁs    ÿz&VCPythonEngine._generate_cpy_enum_declcs.|jr*‡fdd„|jDƒ}t|ƒ|_d|_dS)Ncsg|]}tˆ|ƒ‘qSr)re)r<rí©rLrrr?Øsÿz4VCPythonEngine._loading_cpy_enum..T)rÇrêÚtuplerìZpartial_resolved)rr+r)rLrìrrïrrÒÖs  ÿ z VCPythonEngine._loading_cpy_enumcCs(t|j|jƒD]\}}t|||ƒqdSr )rërêrìr )rr+r)rLrNrírîrrrrÔÝszVCPythonEngine._loaded_cpy_enumcCs&|dkrd}n|}|jd||d�dS)Nz...T)râ)r•)rr+r)rârrrÚ_generate_cpy_macro_decläsz'VCPythonEngine._generate_cpy_macro_declcCs2t|tjƒrt |j¡}n t |¡}| |¡dSr )r'rrƒrur„r,©rr+r)Ztp_ptrrrrÚ"_generate_cpy_variable_collecttypeós  z1VCPythonEngine._generate_cpy_variable_collecttypecCsRt|tjƒr2t |j¡}|jd|||| ¡d�nt |¡}|jd||dd�dS)NF)rßrárˆ)rÞ)r'rrƒrur„r•Úlength_is_unknownròrrrÚ_generate_cpy_variable_declús   ÿ z*VCPythonEngine._generate_cpy_variable_declc st||ƒ}t|tjƒr°| ¡r|t|tƒs,J‚|\}}|j |j¡}t ||j  |¡ƒ\}} | dkrrt d||jfƒ‚|  |¡}|j dur¬|j |¡} |j | |¡}t|||ƒdS|‰t||ƒ‡fdd„} ‡fdd„} tt|ƒ|t| | ƒƒt|ƒj |¡dS)Nrz/bad size: %r does not seem to be an array of %scsˆdSrrrM©ZptrrrÚgettersz3VCPythonEngine._loaded_cpy_variable..gettercs |ˆd<dSrr)rNr>rörrÚsetter!sz3VCPythonEngine._loaded_cpy_variable..setter)rer'rrƒrôrðr rXr„ÚdivmodrÍrZresolve_lengthr½Úcastr Údelattrr$ÚpropertyrDÚappend) rr+r)rLrNr>ÚsizeZ BItemTyper½ÚrestZBArrayr÷rørrörÚ_loaded_cpy_variables2  ÿÿ       z#VCPythonEngine._loaded_cpy_variablecCs4|j}|dƒ|dƒ|d|jdƒ|dƒdS)Nz,static int _cffi_setup_custom(PyObject *lib)r/rÚTr2)r#r3)rr7rrrr5(s z%VCPythonEngine._generate_setup_custom)r )N)NrÖNTFN)r )ré)LrIrJrKZ _class_keyZ_gen_python_modulerrrrr#r%r,r9r`rbrrSrmror~r‚rvrŠZ!_generate_cpy_typedef_collecttypeZ_generate_cpy_typedef_declZ_generate_cpy_typedef_methodZ_loading_cpy_typedefZ_loaded_cpy_typedefrŽr�rŸZ_loading_cpy_functionr¢Z _generate_cpy_struct_collecttyper§rªr®r±Z_generate_cpy_union_collecttyper´rµr¶r·r¦r©r¬r°Z#_generate_cpy_anonymous_collecttyperÐrÑrÓrÕr•råræZ_generate_cpy_constant_methodZ_loading_cpy_constantZ_loaded_cpy_constantrÜrèrÏZ_generate_cpy_enum_collecttypeZ_generate_cpy_enum_methodrÒrÔrñZ_generate_cpy_macro_collecttypeZ_generate_cpy_macro_methodZ_loading_cpy_macroZ_loaded_cpy_macrorórõZ_generate_cpy_variable_methodZ_loading_cpy_variablerr5rrrrr s˜ [ : $  P  3" þ 0   "raí( #include #include /* this block of #ifs should be kept exactly identical between c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py and cffi/_cffi_include.h */ #if defined(_MSC_VER) # include /* for alloca() */ # if _MSC_VER < 1600 /* MSVC < 2010 */ typedef __int8 int8_t; typedef __int16 int16_t; typedef __int32 int32_t; typedef __int64 int64_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; typedef __int8 int_least8_t; typedef __int16 int_least16_t; typedef __int32 int_least32_t; typedef __int64 int_least64_t; typedef unsigned __int8 uint_least8_t; typedef unsigned __int16 uint_least16_t; typedef unsigned __int32 uint_least32_t; typedef unsigned __int64 uint_least64_t; typedef __int8 int_fast8_t; typedef __int16 int_fast16_t; typedef __int32 int_fast32_t; typedef __int64 int_fast64_t; typedef unsigned __int8 uint_fast8_t; typedef unsigned __int16 uint_fast16_t; typedef unsigned __int32 uint_fast32_t; typedef unsigned __int64 uint_fast64_t; typedef __int64 intmax_t; typedef unsigned __int64 uintmax_t; # else # include # endif # if _MSC_VER < 1800 /* MSVC < 2013 */ # ifndef __cplusplus typedef unsigned char _Bool; # endif # endif #else # include # if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) # include # endif #endif #if PY_MAJOR_VERSION < 3 # undef PyCapsule_CheckExact # undef PyCapsule_GetPointer # define PyCapsule_CheckExact(capsule) (PyCObject_Check(capsule)) # define PyCapsule_GetPointer(capsule, name) \ (PyCObject_AsVoidPtr(capsule)) #endif #if PY_MAJOR_VERSION >= 3 # define PyInt_FromLong PyLong_FromLong #endif #define _cffi_from_c_double PyFloat_FromDouble #define _cffi_from_c_float PyFloat_FromDouble #define _cffi_from_c_long PyInt_FromLong #define _cffi_from_c_ulong PyLong_FromUnsignedLong #define _cffi_from_c_longlong PyLong_FromLongLong #define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong #define _cffi_from_c__Bool PyBool_FromLong #define _cffi_to_c_double PyFloat_AsDouble #define _cffi_to_c_float PyFloat_AsDouble #define _cffi_from_c_int_const(x) \ (((x) > 0) ? \ ((unsigned long long)(x) <= (unsigned long long)LONG_MAX) ? \ PyInt_FromLong((long)(x)) : \ PyLong_FromUnsignedLongLong((unsigned long long)(x)) : \ ((long long)(x) >= (long long)LONG_MIN) ? \ PyInt_FromLong((long)(x)) : \ PyLong_FromLongLong((long long)(x))) #define _cffi_from_c_int(x, type) \ (((type)-1) > 0 ? /* unsigned */ \ (sizeof(type) < sizeof(long) ? \ PyInt_FromLong((long)x) : \ sizeof(type) == sizeof(long) ? \ PyLong_FromUnsignedLong((unsigned long)x) : \ PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ (sizeof(type) <= sizeof(long) ? \ PyInt_FromLong((long)x) : \ PyLong_FromLongLong((long long)x))) #define _cffi_to_c_int(o, type) \ ((type)( \ sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ : (type)_cffi_to_c_i8(o)) : \ sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ : (type)_cffi_to_c_i16(o)) : \ sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ : (type)_cffi_to_c_i32(o)) : \ sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ : (type)_cffi_to_c_i64(o)) : \ (Py_FatalError("unsupported size for type " #type), (type)0))) #define _cffi_to_c_i8 \ ((int(*)(PyObject *))_cffi_exports[1]) #define _cffi_to_c_u8 \ ((int(*)(PyObject *))_cffi_exports[2]) #define _cffi_to_c_i16 \ ((int(*)(PyObject *))_cffi_exports[3]) #define _cffi_to_c_u16 \ ((int(*)(PyObject *))_cffi_exports[4]) #define _cffi_to_c_i32 \ ((int(*)(PyObject *))_cffi_exports[5]) #define _cffi_to_c_u32 \ ((unsigned int(*)(PyObject *))_cffi_exports[6]) #define _cffi_to_c_i64 \ ((long long(*)(PyObject *))_cffi_exports[7]) #define _cffi_to_c_u64 \ ((unsigned long long(*)(PyObject *))_cffi_exports[8]) #define _cffi_to_c_char \ ((int(*)(PyObject *))_cffi_exports[9]) #define _cffi_from_c_pointer \ ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[10]) #define _cffi_to_c_pointer \ ((char *(*)(PyObject *, CTypeDescrObject *))_cffi_exports[11]) #define _cffi_get_struct_layout \ ((PyObject *(*)(Py_ssize_t[]))_cffi_exports[12]) #define _cffi_restore_errno \ ((void(*)(void))_cffi_exports[13]) #define _cffi_save_errno \ ((void(*)(void))_cffi_exports[14]) #define _cffi_from_c_char \ ((PyObject *(*)(char))_cffi_exports[15]) #define _cffi_from_c_deref \ ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[16]) #define _cffi_to_c \ ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[17]) #define _cffi_from_c_struct \ ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[18]) #define _cffi_to_c_wchar_t \ ((wchar_t(*)(PyObject *))_cffi_exports[19]) #define _cffi_from_c_wchar_t \ ((PyObject *(*)(wchar_t))_cffi_exports[20]) #define _cffi_to_c_long_double \ ((long double(*)(PyObject *))_cffi_exports[21]) #define _cffi_to_c__Bool \ ((_Bool(*)(PyObject *))_cffi_exports[22]) #define _cffi_prepare_pointer_call_argument \ ((Py_ssize_t(*)(CTypeDescrObject *, PyObject *, char **))_cffi_exports[23]) #define _cffi_convert_array_from_object \ ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[24]) #define _CFFI_NUM_EXPORTS 25 typedef struct _ctypedescr CTypeDescrObject; static void *_cffi_exports[_CFFI_NUM_EXPORTS]; static PyObject *_cffi_types, *_cffi_VerificationError; static int _cffi_setup_custom(PyObject *lib); /* forward */ static PyObject *_cffi_setup(PyObject *self, PyObject *args) { PyObject *library; int was_alive = (_cffi_types != NULL); (void)self; /* unused */ if (!PyArg_ParseTuple(args, "OOO", &_cffi_types, &_cffi_VerificationError, &library)) return NULL; Py_INCREF(_cffi_types); Py_INCREF(_cffi_VerificationError); if (_cffi_setup_custom(library) < 0) return NULL; return PyBool_FromLong(was_alive); } union _cffi_union_alignment_u { unsigned char m_char; unsigned short m_short; unsigned int m_int; unsigned long m_long; unsigned long long m_longlong; float m_float; double m_double; long double m_longdouble; }; struct _cffi_freeme_s { struct _cffi_freeme_s *next; union _cffi_union_alignment_u alignment; }; #ifdef __GNUC__ __attribute__((unused)) #endif static int _cffi_convert_array_argument(CTypeDescrObject *ctptr, PyObject *arg, char **output_data, Py_ssize_t datasize, struct _cffi_freeme_s **freeme) { char *p; if (datasize < 0) return -1; p = *output_data; if (p == NULL) { struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); if (fp == NULL) return -1; fp->next = *freeme; *freeme = fp; p = *output_data = (char *)&fp->alignment; } memset((void *)p, 0, (size_t)datasize); return _cffi_convert_array_from_object(p, ctptr, arg); } #ifdef __GNUC__ __attribute__((unused)) #endif static void _cffi_free_array_arguments(struct _cffi_freeme_s *freeme) { do { void *p = (void *)freeme; freeme = freeme->next; PyObject_Free(p); } while (freeme != NULL); } static int _cffi_init(void) { PyObject *module, *c_api_object = NULL; module = PyImport_ImportModule("_cffi_backend"); if (module == NULL) goto failure; c_api_object = PyObject_GetAttrString(module, "_C_API"); if (c_api_object == NULL) goto failure; if (!PyCapsule_CheckExact(c_api_object)) { PyErr_SetNone(PyExc_ImportError); goto failure; } memcpy(_cffi_exports, PyCapsule_GetPointer(c_api_object, "cffi"), _CFFI_NUM_EXPORTS * sizeof(void *)); Py_DECREF(module); Py_DECREF(c_api_object); return 0; failure: Py_XDECREF(module); Py_XDECREF(c_api_object); return -1; } #define _cffi_type(num) ((CTypeDescrObject *)PyList_GET_ITEM(_cffi_types, num)) /**********/ ) rQr rr^rrrrYrr4rrrrÚs   +