Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/cffi/__pycache__/vengine_gen.cpython-38.opt-1.pyc

U

ل=^4h@sHddlZddlZddlZddlmZddlmZGdddeZdZ	dS)N)modelVerificationErrorc@seZdZdZdZddZddZddZd	d
ZdZdd
Z	ddZ
d[ddZddZddZ
ddZddZddZeZeZeZddZeZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Z d5d6Z!d7d8Z"d9d:Z#d\d=d>Z$d?d@Z%eZ&d]dAdBZ'dCdDZ(dEdFZ)dGdHZ*dIdJZ+d^dLdMZ,d_dNdOZ-dPdQZ.dRdSZ/eZ0dTdUZ1dVdWZ2eZ3dXdYZ4d;S)`VGenericEnginegFcCs||_|j|_g|_i|_dSN)verifierffiexport_symbols_struct_pending_verification)selfr	r/vengine_gen.py__init__szVGenericEngine.__init__cCs|d|jdS)Nr)
setdefaultr)r
kwdsrrrpatch_extension_kwdssz#VGenericEngine.patch_extension_kwdscCsT|D]J}||}|dkrtj}|D]*}tj||}tj|r"|Sq"qdSr)syspathosjoinisfile)r
Zmodule_namerZso_suffixesZ	so_suffixbasenamedirnamefilenamerrrfind_moduleszVGenericEngine.find_modulecCsdSrrr
rrr
collect_types%szVGenericEngine.collect_typescCs|j|ddS)N
)Z_fwrite)r
Zwhatrrr_prnt(szVGenericEngine._prntcCs`|j}|t||jj|dtjdkr\tjdkr>d}nd}|j}|d||fdS)NZdeclZwin32ZPyInit_Zinitzvoid %s%s(void) { }
)	r"cffimod_headerr	Zpreamble	_generaterplatformversion_infoZget_module_name)r
prntprefixmodnamerrrwrite_source_to_f+s



z VGenericEngine.write_source_to_frcsjjj}tjtjjj}|||	dGfdddt
jd}j	d|d|S)NZloadingcs&eZdZZjZgZfddZdS)z/VGenericEngine.load_library.<locals>.FFILibrarycsjSr)	_cffi_dirr)
FFILibraryrr__dir__Tsz7VGenericEngine.load_library.<locals>.FFILibrary.__dir__N)__name__
__module____qualname__Z_cffi_generic_moduler
Z	_cffi_ffir-r/rr.moduler
rrr.Psr.rZloadedlibrary)r
_backendrrrcurdirr	Zmodulefilenameload_library_loadtypes
ModuleType)r
flagsbackendrr6rr3rr9AszVGenericEngine.load_librarycCs$dd|jjjD}||S)NcSsg|]\}\}}||fqSrr).0keytpZqualrrr
<listcomp>^s
z4VGenericEngine._get_declarations.<locals>.<listcomp>)r
Z_parserZ
_declarationsitemssort)r
Zlstrrr_get_declarations]s
z VGenericEngine._get_declarationscCs|D]\}}|dd\}}zt|d||f}Wn tk
rVtd|YnXz|||Wqtk
r}zt||W5d}~XYqXqdS)N rz_generate_gen_%s_%sznot implemented in verify(): %r)rEsplitgetattrAttributeErrorr	Exceptionrattach_exception_info)r
	step_namenamerAkindrealnamemethoderrrr&cs
zVGenericEngine._generatec
Ks~|D]p\}}|dd\}}t|d||f}z||||f|Wqtk
rv}	zt|	|W5d}	~	XYqXqdS)NrFrz
_%s_gen_%s)rErGrHrJrrK)
r
r4rLrrMrArNrOrPrQrrrr:rszVGenericEngine._loadcCsdSrrr
rArMrrr_generate_nothing|sz VGenericEngine._generate_nothingcKsdSrrr
rArMr4rrrr_loaded_noopszVGenericEngine._loaded_noopcst|jr|d||dS|j}t|j}g}t|jD].\}}d}t|tjrRd}|	d||fq6d|fddt
|j|D}	|j}
t|
tjr|	d|

d	tj}
d
|	pd}	d|}|j	||jr|jd
}nd}d|||	f}
d|||

|
|dt|jtjr0d}nt|jtjsFd}nd}|d||d
|f|d|dS)NFr*z%sx%dzargument of %scs g|]\}}|d|qS)z %s)
get_c_name)r?typeargcontextrrrBsz>VGenericEngine._generate_gen_function_decl.<locals>.<listcomp>rz *rz, Zvoid
_cffi_f_%srFz	 %s%s(%s)zresult of %s{z*r = zreturn z  %s%s(%s);})ellipsis_generate_gen_constr"lenargs	enumerate
isinstancer
StructOrUnionappendzipresultinsertrW	void_typerrabiZVoidType)r
rArMr)ZnumargsZargnamesirXZindirectionZarglistZtpresultwrappernamerkZfuncdeclZresult_coderrZr_generate_gen_function_declsJ


z*VGenericEngine._generate_gen_function_declcCsX|jr|d|||}ng}|}tdd|jDsDt|jtjrg}t|jD]6\}	}
t|
tjr~t	|
}
|
|	|
f|
|
qR|j}t|tjr|jdkrtd|
ft	|}|d||dd|ftj}tt|||j}|j|}d|}
|||
}|D]\}	}
|||	|
|}qt|||t|j
|dS)NFcss|]}t|tjVqdSr)rdrre)r?typrrr	<genexpr>sz6VGenericEngine._loaded_gen_function.<locals>.<genexpr>z*'%s' is used as result type, but is opaquerrhr\)r__load_constantanyrbrdrhrrercPointerTyperfZfldtypes	TypeError_get_c_namerirjZFunctionPtrTypetupler
_get_cached_btype
load_function_make_struct_wrappersetattrrXr-)r
rArMr4r6ZnewfunctionZindirectionsbase_tpZ
indirect_argsrlroZindirect_resultBFuncrmrrr_loaded_gen_functionsJ




z#VGenericEngine._loaded_gen_functioncsP|jj|j|dkr4|jfdd}nfdd}||_|S)Nrhcs }|f||dSNr)new)rbres)BTyper
oldfuncrrnewfuncs
z4VGenericEngine._make_struct_wrapper.<locals>.newfunccs6|d|f|dd}|S)Nr)Znewp)rb)rr>rlrrrrs.)r
r7rwZ_cffi_base_type)r
rrlrAr{rr)rr>r
rlrrrysz#VGenericEngine._make_struct_wrappercCs||d|dSNstruct_generate_struct_or_union_declrRrrr_generate_gen_struct_declsz(VGenericEngine._generate_gen_struct_declcCs||d||dSr_loading_struct_or_unionr
rArMr4rrr_loading_gen_structsz"VGenericEngine._loading_gen_structcKs||dSr_loaded_struct_or_unionrTrrr_loaded_gen_structsz!VGenericEngine._loaded_gen_structcCs||d|dSNunionrrRrrr_generate_gen_union_declsz'VGenericEngine._generate_gen_union_declcCs||d||dSrrrrrr_loading_gen_unionsz!VGenericEngine._loading_gen_unioncKs||dSrrrTrrr_loaded_gen_unionsz VGenericEngine._loaded_gen_unionc
Cs|jdkrdSd||f}d||f}d||f}|j}|d||f|d|d|d|D]\}}	}
}t|	tjr|	s|
dkr|d	|qlz$|d
|	jdd||d
|fWqlt	k
r}z|dt
|W5d}~XYqlXql|d|j||d|f|d|d||d|d||d|D]h\}}	}
}|
dkrpqV|d||ft|	tj
r|	jdkr|d|	n|d||fqV|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 */r^zintptr_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);)fldnamesstripr"
enumfieldsrdr
PrimitiveTypeis_integer_typerWrstrrrf	ArrayTypelengthru)
r
rAr*rMZ
checkfuncnamelayoutfuncnamecnamer)fnameftypefbitsizefqualrQrrrrs\
$
z-VGenericEngine._generate_struct_or_union_declcCs|jdkrdSd||f}|jdd}|||}g}d}	||	}
|
dkrPqd||
|	d7}	q>t|tjr|jr|d}|d}|ddd}
|ddd}|	|
|||f|_
nd||f}||f|j|<dS)Nrzintptr_t(*)(intptr_t)rrr$r)
rr
_typeof_lockedrxrfrdrrepartialZ
force_flattenZfixedlayoutrr)r
rAr*rMr4rr|functionlayoutZnumxZ	totalsizeZtotalalignmentZfieldofsZ	fieldsizerrrrr7s*


z'VGenericEngine._loading_struct_or_unionc
Cs|jdkrdS|j|||jkrdd}|j}||}|j|\}}||d||d||d||dd}|D]v\}}	}
}|
dkrq||||||d|f||ddkr||	}|||d||d	|f|d7}qdS)
NcSs||krtd|||fdS)Nz'%s (we have %d, but C compiler says %d)r)Z	realvalueZ
expectedvaluemsgrrrcheckZsz5VGenericEngine._loaded_struct_or_union.<locals>.checkrzwrong total sizerzwrong total alignmentrzwrong offset for field %rzwrong size for field %r)	rr
rwrpopsizeofZalignofrZoffsetof)
r
rArr
ZBStructrrrlrrrrZBFieldrrrrSs0




z&VGenericEngine._loaded_struct_or_unioncCs.t|tjr|||dn||d|dSNr)rdrEnumType_generate_gen_enum_declrrRrrr_generate_gen_anonymous_declusz+VGenericEngine._generate_gen_anonymous_declcCs2t|tjr||||dn||d||dSr)rdrr_loading_gen_enumrrrrr_loading_gen_anonymous{sz%VGenericEngine._loading_gen_anonymouscKs.t|tjr |j|||f|n
||dSr)rdrr_loaded_gen_enumrrTrrr_loaded_gen_anonymoussz$VGenericEngine._loaded_gen_anonymousNconstc
Cs
|j}d||f}|j||dk	rX|d||d||||d|dn|r|d||d|d|f|d|f|dnj|d	krd
}nd}d}	|dkrt|tjrd
}	d
}||d|	|f||d|d||f|d|dS)Nz_cffi_%s_%sint %s(char *out_error)r]  return 0;r^zint %s(long long *out_value)z  *out_value = (long long)(%s);z  return (%s) <= 0;var&rrzconst *z %s%s(void)z  return (%s%s);)r"rrf_check_int_constant_valuerdrrerW)
r
is_intrMrAcategorycheck_valuer)funcnameZ	ampersandZextrarrrr`s6

z"VGenericEngine._generate_gen_constcCs&t|tjo|}||||dSr)rdrrrr`)r
rArMrrrr_generate_gen_constant_declsz*VGenericEngine._generate_gen_constant_declcCsd|}|dk	r"||||}n|r|jdd}|jdd}	||	|}
|j|}|
|}t|d}|dkr|s|jdd}
|dd|j|
>7}nVd}t|tj	rd	|}|j|
||d}	||	|}
|
}t|tj	r|d}|S)
Nz_cffi_const_%sz
long long*rzint(*)(long long*)z	long longrz	(*)(void)rV)_load_known_int_constantr
rrxrintrrdrrerW)r
rrArMr4rrvaluerr|rpnegativeZ	BLongLongZfntypeextrarrrrqs.zVGenericEngine._load_constantcCsDt|tjo|}|||||}t|||t|j|dSr)	rdrrrrqrzrXr-rf)r
rArMr4r6rrrrr_loaded_gen_constantsz#VGenericEngine._loaded_gen_constantcCs|j}|dkr"|d|||fn|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
rMrr)rrrrs.
z(VGenericEngine._check_int_constant_valuecCsr|jdd}|jdd}|||}|j|d}||dkrn|j|}tjdkrft|d}t|dS)Nzchar[]rz
int(*)(char*)r#zutf-8)	r
rrxrstringrr(rr)r
r4rrr|rrerrorrrrrs

z'VGenericEngine._load_known_int_constantcCs|dd}d||fS)N$Z___D_z
_cffi_e_%s_%s)replace)r
r*rMrrr_enum_funcnameszVGenericEngine._enum_funcnameenumcCs|jr"|jD]}|d|qdS|||}|j||j}|d||dt|j|jD]\}}|	||qb|d|d|dS)NTrr]rr^)
renumeratorsr`rrrfr"rg
enumvaluesr)r
rArMr*
enumeratorrr)	enumvaluerrrrs
z&VGenericEngine._generate_gen_enum_declcsLjr0fddjD}t|_d_n||}|dS)Ncsg|]}d|qS)T)rq)r?rr4r
rArrrBsz4VGenericEngine._loading_gen_enum.<locals>.<listcomp>T)rrrvrZpartial_resolvedrr)r
rArMr4r*rrrrrrs
z VGenericEngine._loading_gen_enumcCs8t|j|jD]$\}}t|||t|j|qdSr)rgrrrzrXr-rf)r
rArMr4r6rrrrrrszVGenericEngine._loaded_gen_enumcCs&|dkrd}n|}|jd||ddSN...T)r)r`)r
rArMrrrr_generate_gen_macro_decl sz'VGenericEngine._generate_gen_macro_declcCsF|dkrd}n|}|jd||||d}t|||t|j|dSr)rqrzrXr-rf)r
rArMr4r6rrrrr_loaded_gen_macro)sz VGenericEngine._loaded_gen_macrocCst|tjrx|jdkr\|j}d|f}|j||d||d|d|f|dt|j}|	d||nt|}|j	d||dd	dS)
Nr_cffi_sizeof_%szsize_t %s(void)r]z  return sizeof(%s);r^Fr)r)
rdrrrr"rrfrsitemr`)r
rArMr)rtp_ptrrrr_generate_gen_variable_decl6s


z*VGenericEngine._generate_gen_variable_declcs^t|tjr|jdkrd|f}|jdd}|||}|}|j|j}	t	||j
|	\}
}|dkrtd||jf||
}t
|j}|d|||}
|jdk	r|j|}|j||
}
t|||
t|j|dSd|}|j|d|d}|||}|fd	d
}fdd}tt||t||t|j|dS)
Nrrzsize_t(*)(void)rz/bad size: %r does not seem to be an array of %sFz_cffi_var_%sz
*(*)(void)csdSr~rr5Zptrrrgettergsz3VGenericEngine._loaded_gen_variable.<locals>.gettercs|d<dSr~r)r6rrrrsetterisz3VGenericEngine._loaded_gen_variable.<locals>.setter)rdrrrr
rrxrwrdivmodrrZresolve_lengthrsrqcastrzrXr-rfrWproperty)r
rArMr4r6rr|rsizeZ	BItemTyperrestrrZBArrayrrrrr_loaded_gen_variableHs>



z#VGenericEngine._loaded_gen_variable)r)r)NrN)N)r)r)5r0r1r2Z
_class_keyZ_gen_python_modulerrrrr"r,r9rEr&r:rSrUZ_generate_gen_typedef_declZ_loading_gen_typedefZ_loaded_gen_typedefrnZ_loading_gen_functionr}ryrrrrrrrrrrrrr`rZ_loading_gen_constantrqrrrrrrrrZ_loading_gen_macrorrZ_loading_gen_variablerrrrrrsh



-$1"	
%
	



rad
#include <stdio.h>
#include <stddef.h>
#include <stdarg.h>
#include <errno.h>
#include <sys/types.h>   /* 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 <malloc.h>   /* 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 <stdint.h>
# endif
# if _MSC_VER < 1800   /* MSVC < 2013 */
#  ifndef __cplusplus
    typedef unsigned char _Bool;
#  endif
# endif
#else
# include <stdint.h>
# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux)
#  include <alloca.h>
# endif
#endif
)
rrr;rrrrobjectrr%rrrr<module>sg
Back to Directory File Manager