grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a —`„Z$d?d@„Z%eZ&d]dAdB„Z'dCdD„Z(dEdF„Z)dGdH„Z*dIdJ„Z+d^dLdM„Z,d_dNdO„Z-dPdQ„Z.dRdS„Z/eZ0dTdU„Z1dVdW„Z2eZ3dXdY„Z4d;S)`ÚVGenericEngineÚgFcCs||_|j|_g|_i|_dS©N)ÚverifierÚffiÚexport_symbolsÚ_struct_pending_verification)Úselfr ©rú6/usr/lib64/python3.9/site-packages/cffi/vengine_gen.pyÚ__init__szVGenericEngine.__init__cCs| d|j¡dS)Nr )Ú setdefaultr )r ÚkwdsrrrÚpatch_extension_kwdssz#VGenericEngine.patch_extension_kwdscCsT|D]J}||}|durtj}|D]*}tj ||¡}tj |¡r"|Sq"qdSr)ÚsysÚpathÚosÚjoinÚisfile)r Z module_namerZ so_suffixesZ so_suffixÚbasenameÚdirnameÚfilenamerrrÚ find_modules zVGenericEngine.find_modulecCsdSrr©r rrrÚ collect_types%szVGenericEngine.collect_typesÚcCs|j |d¡dS)NÚ )Z_fÚwrite)r ZwhatrrrÚ_prnt(szVGenericEngine._prntcCs`|j}|tƒ||jjƒ| d¡tjdkr\tjdkr>d}nd}|j ¡}|d||fƒdS)NZdeclÚwin32©éZPyInit_Úinitzvoid %s%s(void) { } ) r"Úcffimod_headerr ZpreambleÚ _generaterÚplatformÚ version_infoZget_module_name)r ÚprntÚprefixÚmodnamerrrÚwrite_source_to_f+s     z VGenericEngine.write_source_to_frcsjˆjj}tj tjˆjj¡}| ||¡‰ˆ  ˆd¡G‡‡‡fdd„dt j ƒ‰ˆdƒ}ˆj ˆd|d�|S)NZloadingcs&eZdZ”Z”jZgZ‡fdd„ZdS)z/VGenericEngine.load_library..FFILibrarycsˆjSr)Ú _cffi_dirr)Ú FFILibraryrrÚ__dir__Tsz7VGenericEngine.load_library..FFILibrary.__dir__N)Ú__name__Ú __module__Ú __qualname__Z_cffi_generic_moduler Z _cffi_ffir/r1r©r0Úmoduler rrr0Psr0rZloaded©Úlibrary) r Ú_backendrrrÚcurdirr ZmodulefilenameÚ load_libraryÚ_loadÚtypesÚ ModuleType)r ÚflagsÚbackendrr8rr5rr;As  zVGenericEngine.load_librarycCs$dd„|jjj ¡Dƒ}| ¡|S)NcSsg|]\}\}}||f‘qSrr)Ú.0ÚkeyÚtpZqualrrrÚ ^óz4VGenericEngine._get_declarations..)r Z_parserZ _declarationsÚitemsÚsort)r ZlstrrrÚ_get_declarations]s  ÿz VGenericEngine._get_declarationsc Csž| ¡D]�\}}| dd¡\}}zt|d||fƒ}WntyTtd|ƒ‚Yn0z|||ƒWqty–}zt ||¡‚WYd}~qd}~00qdS)Nú rz_generate_gen_%s_%sznot implemented in verify(): %r)rHÚsplitÚgetattrÚAttributeErrorrÚ ExceptionrÚattach_exception_info)r Ú step_nameÚnamerCÚkindÚrealnameÚmethodÚerrrr(csÿ  ÿ  zVGenericEngine._generatec Ks„| ¡D]v\}}| dd¡\}}t|d||fƒ}z||||fi|¤ŽWqty|} zt | |¡‚WYd} ~ qd} ~ 00qdS)NrIrz _%s_gen_%s)rHrJrKrMrrN) r r6rOrrPrCrQrRrSrTrrrr<rs zVGenericEngine._loadcCsdSrr©r rCrPrrrÚ_generate_nothing|sz VGenericEngine._generate_nothingcKsdSrr©r rCrPr6rrrrÚ _loaded_noopszVGenericEngine._loaded_noopcst|jr| d||¡dS|j}t|jƒ}g}t|jƒD].\}}d}t|tjƒrRd}|  d||f¡q6d|‰‡fdd„t |j|ƒDƒ} |j } t| tjƒr´|   d|   d ˆ¡¡tj} d  | ¡pÀd } d |} |j  | ¡|jrè|jd } nd} d| | | f} d|‰||   | ˆ¡ƒ|dƒt|j tjƒ�r0d}nt|j tjƒ�sFd}nd}|d||d  |¡fƒ|dƒ|ƒdS)NFrÚ*z%sx%dzargument of %scs g|]\}}| d|ˆ¡‘qS)z %s)Ú get_c_name)rAÚtypeÚarg©ÚcontextrrrD�sÿz>VGenericEngine._generate_gen_function_decl..rz *rz, Zvoidú _cffi_f_%srIz %s%s(%s)z result of %sú{z*r = zreturn z %s%s(%s);ú})ÚellipsisÚ_generate_gen_constr"ÚlenÚargsÚ enumerateÚ isinstancerÚ StructOrUnionÚappendÚzipÚresultÚinsertrZÚ void_typerr ÚabiZVoidType)r rCrPr+ZnumargsZargnamesÚir[Z indirectionZarglistZtpresultÚ wrappernamernZfuncdeclZ result_coderr]rÚ_generate_gen_function_declŒsJ    ÿ   z*VGenericEngine._generate_gen_function_declcCsX|jr| d|||¡}�ng}|}tdd„|jDƒƒsDt|jtjƒrøg}t|jƒD]6\} } t| tjƒr~t  | ¡} |  | | f¡|  | ¡qR|j} t| tjƒrä| j dur¸t d|   ¡fƒ‚t  | ¡} | d| ¡| dd| f¡tj} t t|ƒ| |j¡}|j |¡} d|} | | | ¡}|D]\} } | || | |¡}�qt|||ƒt|ƒj  |¡dS)NFcss|]}t|tjƒVqdSr)rgrrh)rAÚtyprrrÚ ÂrEz6VGenericEngine._loaded_gen_function..z*'%s' is used as result type, but is opaquerrkr_)rbÚ_load_constantÚanyrergrkrrhrfÚ PointerTyperiZfldtypesÚ TypeErrorÚ _get_c_namerlrmZFunctionPtrTypeÚtupler Ú_get_cached_btypeÚ load_functionÚ_make_struct_wrapperÚsetattrr[r/)r rCrPr6r8Z newfunctionZ indirectionsÚbase_tpZ indirect_argsrorrZindirect_resultÚBFuncrprrrÚ_loaded_gen_function»sH ÿ     ÿÿ   ÿ    ÿ z#VGenericEngine._loaded_gen_functioncsP|jj‰|j |¡‰ˆdkr4|j‰‡‡‡fdd„}n‡‡‡‡fdd„}||_|S)Nrkcs"ˆ ˆ¡}ˆ|g|¢RŽ|dS©Nr)Únew)reÚres)ÚBTyper ÚoldfuncrrÚnewfuncäs z4VGenericEngine._make_struct_wrapper..newfunccs6|dˆ…ˆ ˆ|ˆ¡f|ˆdd…}ˆ|ŽS)Nr)Znewp)re)r„r@ror…rrr†és.)r r9rzZ_cffi_base_type)r r…rorCr~r†r)r„r@r ror…rr|ßs z#VGenericEngine._make_struct_wrappercCs| |d|¡dS©NÚstruct©Ú_generate_struct_or_union_declrUrrrÚ_generate_gen_struct_declòsz(VGenericEngine._generate_gen_struct_declcCs| |d||¡dSr‡©Ú_loading_struct_or_union©r rCrPr6rrrÚ_loading_gen_structösz"VGenericEngine._loading_gen_structcKs| |¡dSr©Ú_loaded_struct_or_unionrWrrrÚ_loaded_gen_structùsz!VGenericEngine._loaded_gen_structcCs| |d|¡dS©NÚunionr‰rUrrrÚ_generate_gen_union_declüsz'VGenericEngine._generate_gen_union_declcCs| |d||¡dSr“rŒrŽrrrÚ_loading_gen_unionsz!VGenericEngine._loading_gen_unioncKs| |¡dSrr�rWrrrÚ_loaded_gen_unionsz VGenericEngine._loaded_gen_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ƒ|j   |¡|d|fƒ|dƒ|d|ƒ|dƒ|d|ƒ|dƒ| ¡D]h\}} } } | dk�rr�qX|d||fƒt| tj ƒ�r®| jdu�r®|d|  ¡ƒn|d||fƒ�qX|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 */razintptr_t %s(intptr_t i)z, struct _cffi_aligncheck { char x; %s y; };z static intptr_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 };z return nums[i];z3 /* the next line is not executed, but compiled */z %s(0);)ÚfldnamesÚstripr"Ú enumfieldsrgrÚ PrimitiveTypeÚis_integer_typerZrÚstrr riÚ ArrayTypeÚlengthrx) r rCr,rPZ checkfuncnameÚlayoutfuncnameÚcnamer+ÚfnameÚftypeÚfbitsizeÚfqualrTrrrrŠs\    ÿÿþ (    z-VGenericEngine._generate_struct_or_union_declcCsÜ|jdurdSd||f}|j d¡d}| ||¡}g}d} || ƒ} | dkrPqd| | ¡| d7} q>t|tjƒrº|jrº|d} |d} |ddd…} |ddd…}|  ¡| || | f|_ nd||f  ¡}||f|j |<dS)Nr˜zintptr_t(*)(intptr_t)rrér%r™) ršr Ú_typeof_lockedr{rirgrrhÚpartialZ force_flattenZ fixedlayoutr›r )r rCr,rPr6r¢rÚfunctionÚlayoutZnumÚxZ totalsizeZtotalalignmentZfieldofsZ fieldsizer£rrrr�7s(      z'VGenericEngine._loading_struct_or_unionc Cs|jdurdS|j |¡||jvrüdd„}|j}| |¡}|j |¡\}}||d| |¡dƒ||d| |¡dƒd}| ¡D]v\}} } } | dkršq„|||| ||¡d|fƒ||ddkrò| | ¡} |||d| | ¡d |fƒ|d7}q„dS) NcSs||krtd|||fƒ‚dS)Nz'%s (we have %d, but C compiler says %d)r)Z realvalueZ expectedvalueÚmsgrrrÚcheckZs ÿÿz5VGenericEngine._loaded_struct_or_union..checkrzwrong total sizerzwrong total alignmentr¨zwrong offset for field %rzwrong size for field %r) ršr rzr ÚpopÚsizeofZalignofrœZoffsetof) r rCr¯r ZBStructr¬r£ror¤r¥r¦r§ZBFieldrrrr‘Ss0    ÿ ÿ z&VGenericEngine._loaded_struct_or_unioncCs.t|tjƒr| ||d¡n| |d|¡dS©Nr)rgrÚEnumTypeÚ_generate_gen_enum_declrŠrUrrrÚ_generate_gen_anonymous_declus z+VGenericEngine._generate_gen_anonymous_declcCs2t|tjƒr| |||d¡n| |d||¡dSr²)rgrr³Ú_loading_gen_enumr�rŽrrrÚ_loading_gen_anonymous{s z%VGenericEngine._loading_gen_anonymouscKs2t|tjƒr$|j|||fi|¤Žn | |¡dSr)rgrr³Ú_loaded_gen_enumr‘rWrrrÚ_loaded_gen_anonymous�s z$VGenericEngine._loaded_gen_anonymousNÚconstc Cs |j}d||f}|j |¡|durX|d|ƒ|dƒ| ||¡|dƒ|dƒn¨|r–|d|ƒ|dƒ|d|fƒ|d|fƒ|dƒnj|d kr¤d }nd }d } |d krÈt|tjƒrÈd } d }|| d| |f|¡ƒ|dƒ|d||fƒ|dƒ|ƒdS)Nz _cffi_%s_%súint %s(char *out_error)r`ú return 0;razint %s(long long *out_value)z *out_value = (long long)(%s);z return (%s) <= 0;Úvarú&rrºzconst *z %s%s(void)z return (%s%s);)r"r riÚ_check_int_constant_valuergrrhrZ) r Úis_intrPrCÚcategoryÚ check_valuer+ÚfuncnameZ ampersandZextrarrrrcŠs6       z"VGenericEngine._generate_gen_constcCs&t|tjƒo| ¡}| |||¡dSr)rgrr�ržrc)r rCrPrÀrrrÚ_generate_gen_constant_decl¯sz*VGenericEngine._generate_gen_constant_declcCsd|}|dur"| ||¡|}nÜ|r¨|j d¡d}|j d¡d} | | |¡} |j |¡} | | ƒ} t| dƒ}|dkrþ| sþ|j d¡d} |dd|j | ¡>7}nVd}t|tj ƒrÀd |}|j |  ||¡¡d} | | |¡} | ƒ}t|tj ƒrþ|d}|S) Nz_cffi_const_%sz long long*rzint(*)(long long*)z long longréz (*)(void)rY) Ú_load_known_int_constantr r©r{r‚Úintr±rgrrhrZ)r rÀrCrPr6rÂrÃÚvaluer„rr«ÚpÚnegativeZ BLongLongZ fntypeextrarrrrtµs.        zVGenericEngine._load_constantcCsDt|tjƒo| ¡}| ||||¡}t|||ƒt|ƒj |¡dSr) rgrr�ržrtr}r[r/ri)r rCrPr6r8rÀrÈrrrÚ_loaded_gen_constantÑs z#VGenericEngine._loaded_gen_constantcCsœ|j}|dkr"|d|||fƒn|d|||fƒ|dƒ|d|ƒ|d|ƒ|dƒ|d|ƒ|d ƒ|d |dd …|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) sprintf(buf, "%%ld", (long)(%s));z elsez2 sprintf(buf, "%%lu", (unsigned long)(%s));z: sprintf(out_error, "%s has the real value %s, not %s",z "%s", buf, "%d");édz return -1;z })r")r rPrÈr+rrrr¿Ús&ÿ ÿ  ÿz(VGenericEngine._check_int_constant_valuecCsr|j d¡d}|j d¡d}| ||¡}|j |d¡}||ƒdkrn|j |¡}tjdkrft|dƒ}t|ƒ‚dS)Nzchar[]rz int(*)(char*)ér$zutf-8) r r©r{r‚Ústringrr*rŸr)r r6rÃr„rr«rÉÚerrorrrrrÆís     z'VGenericEngine._load_known_int_constantcCs| dd¡}d||fS)Nú$Z___D_z _cffi_e_%s_%s)Úreplace)r r,rPrrrÚ_enum_funcnameøs zVGenericEngine._enum_funcnameÚenumcCs’|jr"|jD]}| d|¡q dS| ||¡}|j |¡|j}|d|ƒ|dƒt|j|jƒD]\}}|  ||¡qb|dƒ|dƒ|ƒdS)NTr»r`r¼ra) rªÚ enumeratorsrcrÒr rir"rjÚ enumvaluesr¿)r rCrPr,Ú enumeratorrÃr+Ú enumvaluerrrr´ýs    z&VGenericEngine._generate_gen_enum_declcsLˆjr0‡‡‡fdd„ˆjDƒ}t|ƒˆ_dˆ_nˆ ||¡}ˆ ˆ|¡dS)Ncsg|]}ˆ dˆ|ˆ¡‘qS)T)rt)rArÖ©r6r rCrrrDsÿz4VGenericEngine._loading_gen_enum..T)rªrÔryrÕZpartial_resolvedrÒrÆ)r rCrPr6r,rÕrÃrrØrr¶sÿ  z VGenericEngine._loading_gen_enumcCs8t|j|jƒD]$\}}t|||ƒt|ƒj |¡qdSr)rjrÔrÕr}r[r/ri)r rCrPr6r8rÖr×rrrr¸s zVGenericEngine._loaded_gen_enumcCs&|dkrd}n|}|jd||d�dS©Nz...T)rÂ)rc)r rCrPrÂrrrÚ_generate_gen_macro_decl sz'VGenericEngine._generate_gen_macro_declcCsF|dkrd}n|}|jd||||d�}t|||ƒt|ƒj |¡dSrÙ)rtr}r[r/ri)r rCrPr6r8rÂrÈrrrÚ_loaded_gen_macro)s ÿ z VGenericEngine._loaded_gen_macrocCs–t|tjƒrv| ¡rZ|j}d|f}|j |¡|d|ƒ|dƒ|d|fƒ|dƒt |j¡}|  d||¡nt |¡}|j d||dd�dS) Nú_cffi_sizeof_%szsize_t %s(void)r`z return sizeof(%s);raFr½)rÁ) rgrr Úlength_is_unknownr"r rirvÚitemrc)r rCrPr+rÃÚtp_ptrrrrÚ_generate_gen_variable_decl6s      z*VGenericEngine._generate_gen_variable_declcs\t|tjƒrè| ¡rˆd|f}|j d¡d}| ||¡}|ƒ}|j |j¡} t ||j  | ¡ƒ\} } | dkr~t d||jfƒ‚|  | ¡}t  |j¡} | d| ||¡} |jdurÈ|j |¡}|j || ¡} t||| ƒt|ƒj |¡dSd|}|j | d|¡¡d}| ||¡}|ƒ‰‡fdd „}‡fd d „}tt|ƒ|t||ƒƒt|ƒj |¡dS) NrÜzsize_t(*)(void)rz/bad size: %r does not seem to be an array of %sFz _cffi_var_%sz *(*)(void)csˆdSr�rr7©ZptrrrÚgettergsz3VGenericEngine._loaded_gen_variable..gettercs |ˆd<dSr�r)r8rÈrárrÚsetterisz3VGenericEngine._loaded_gen_variable..setter)rgrr rÝr r©r{rzrÞÚdivmodr±rZresolve_lengthrvrtr¡Úcastr}r[r/rirZÚproperty)r rCrPr6r8rÃrr«ÚsizeZ BItemTyper¡ÚrestrßrÈZBArrayrârãrrárÚ_loaded_gen_variableHs>   ÿÿ        z#VGenericEngine._loaded_gen_variable)r)r)NrºN)N)rÓ)rÓ)5r2r3r4Z _class_keyZ_gen_python_modulerrrrr"r.r;rHr(r<rVrXZ_generate_gen_typedef_declZ_loading_gen_typedefZ_loaded_gen_typedefrqZ_loading_gen_functionr€r|r‹r�r’r•r–r—rŠr�r‘rµr·r¹rcrÄZ_loading_gen_constantrtrËr¿rÆrÒr´r¶r¸rÚZ_loading_gen_macrorÛràZ_loading_gen_variablerérrrrr sh    -$1" ÿ %      rad #include #include #include #include #include /* XXX for ssize_t on some platforms */ /* 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 ) rrr=rrrÏrÚobjectrr'rrrrÚs  g