zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
U
L±dqWã@sÖddlZddlZddlmZddlmZmZmZdZdZ    dZ
dd„Z Gd    d
„d
e ƒZ Gd d „d e ƒZGd d„deƒZeƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZeeƒZdd „ZeeƒZGd!d"„d"eƒZGd#d$„d$eƒZeed%ƒdƒZGd&d'„d'e ƒZGd(d)„d)eƒZ Gd*d+„d+e ƒZ!Gd,d-„d-e ƒZ"Gd.d/„d/eƒZ#d<d0d1„Z$d=d2d3„Z%eƒZ&e '¡Z(d4d5„Z)d6d7„Z*d8d9„Z+d:d;„Z,dS)>éNé)Ú allocate_lock)Ú    CDefErrorÚVerificationErrorÚVerificationMissingéécCs@|t@rd| ¡}|t@r(d| ¡}|t@r<d| ¡}|S)Nz const z
 volatile z  __restrict )ÚQ_CONSTÚlstripÚ
Q_VOLATILEÚ
Q_RESTRICT)ÚqualsÚ replace_with©rúAd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\cffi/model.pyÚqualify s   rc@sPeZdZdZdZddd„Zdd„Zd    d
„Zd d „Zdd d„Z    dd„Z
dd„Z dS)ÚBaseTypeByIdentityFÚúa C filercCsŠ|j}| d¡dkst‚| ¡}|rT| d¡r@d|kr@d|}n|ddkrTd|}t||ƒ}| d|¡}d    |kr†td
| ¡|fƒ‚|S) Nú&rÚ*z&[ú(%s)rz[(ú ú$z-cannot generate '%s' in %s: unknown type name)    Úc_name_with_markerÚcountÚAssertionErrorÚstripÚ
startswithrÚreplacerÚ _get_c_name)ÚselfrÚcontextr ÚresultrrrÚ
get_c_names"
 
 
ÿÿzBaseTypeByIdentity.get_c_namecCs|j dd¡S)Nrr)rr©r!rrrr /szBaseTypeByIdentity._get_c_namecCs d| ¡kS)Nr©r r%rrrÚ
has_c_name2szBaseTypeByIdentity.has_c_namecCsdS©NFrr%rrrÚis_integer_type5sz"BaseTypeByIdentity.is_integer_typecCsNz|j|}Wn:tk
rH| ||¡}|j ||¡}||ksDt‚YnX|S©N)Ú_cached_btypesÚKeyErrorÚbuild_backend_typeÚ
setdefaultr)r!ÚffiÚ
finishlistÚ    can_delayÚBTypeZBType2rrrÚget_cached_btype8s z#BaseTypeByIdentity.get_cached_btypecCsd| ¡fS)Nz<%s>r&r%rrrÚ__repr__AszBaseTypeByIdentity.__repr__cs‡fdd„ˆjDƒS)Ncsg|]}|tˆ|ƒf‘qSr)Úgetattr)Ú.0Únamer%rrÚ
<listcomp>Esz1BaseTypeByIdentity._get_items.<locals>.<listcomp>)Ú_attrs_r%rr%rÚ
_get_itemsDszBaseTypeByIdentity._get_itemsN)rrr)F) Ú__name__Ú
__module__Ú __qualname__Ú is_array_typeÚis_raw_functionr$r r'r)r3r4r:rrrrrs
 
    rc@s$eZdZdd„Zdd„Zdd„ZdS)ÚBaseTypecCs|j|jko| ¡| ¡kSr*)Ú    __class__r:©r!ÚotherrrrÚ__eq__Js ÿzBaseType.__eq__cCs
||k Sr*rrBrrrÚ__ne__NszBaseType.__ne__cCst|jt| ¡ƒfƒSr*)ÚhashrAÚtupler:r%rrrÚ__hash__QszBaseType.__hash__N)r;r<r=rDrErHrrrrr@Hsr@c@s eZdZdZdd„Zdd„ZdS)ÚVoidTypercCs
d|_dS)Nzvoid&)rr%rrrÚ__init__XszVoidType.__init__cCs t||dƒS)NZ new_void_type©Ú global_cache©r!r/r0rrrr-[szVoidType.build_backend_typeN©r;r<r=r9rJr-rrrrrIUsrIc@seZdZdd„ZdS)ÚBasePrimitiveTypecCsdSr(rr%rrrÚis_complex_typebsz!BasePrimitiveType.is_complex_typeN)r;r<r=rPrrrrrOasrOc4@s¬eZdZdZddddddddddddddddddddddddddddddddddddddddddddddddddddœ3Zdd„Zd    d
„Zd d „Zd d„Zdd„Z    dd„Z
dS)Ú PrimitiveType©r7ÚcÚiÚfÚj)3ÚcharÚshortÚintÚlongz    long longz signed charz unsigned charzunsigned shortú unsigned intú unsigned longzunsigned long longÚfloatÚdoublez long doublezfloat _Complexzdouble _ComplexZ_BoolZwchar_tZchar16_tZchar32_tZint8_tZuint8_tZint16_tZuint16_tZint32_tZuint32_tZint64_tZuint64_tZ int_least8_tZ uint_least8_tZ int_least16_tZuint_least16_tZ int_least32_tZuint_least32_tZ int_least64_tZuint_least64_tZ int_fast8_tZ uint_fast8_tZ int_fast16_tZ uint_fast16_tZ int_fast32_tZ uint_fast32_tZ int_fast64_tZ uint_fast64_tZintptr_tZ    uintptr_tZintmax_tZ    uintmax_tZ    ptrdiff_tZsize_tZssize_tcCs"||jkst‚||_|d|_dS©Nr)ÚALL_PRIMITIVE_TYPESrr7r©r!r7rrrrJ szPrimitiveType.__init__cCs|j|jdkS)NrS©r`r7r%rrrÚ is_char_type¥szPrimitiveType.is_char_typecCs|j|jdkS)NrTrbr%rrrr)§szPrimitiveType.is_integer_typecCs|j|jdkS)NrUrbr%rrrÚ is_float_type©szPrimitiveType.is_float_typecCs|j|jdkS)NrVrbr%rrrrP«szPrimitiveType.is_complex_typecCst||d|jƒS)NZnew_primitive_type)rLr7rMrrrr-®sz PrimitiveType.build_backend_typeN) r;r<r=r9r`rJrcr)rdrPr-rrrrrQfsvÌ7rQc@s(eZdZdZdd„Zdd„Zdd„ZdS)    ÚUnknownIntegerTyperRcCs||_|d|_dSr_©r7rrarrrrJµszUnknownIntegerType.__init__cCsdS)NTrr%rrrr)¹sz"UnknownIntegerType.is_integer_typecCstd|jƒ‚dS)Nz4integer type '%s' can only be used after compilation©ÚNotImplementedErrorr7rMrrrr-¼sÿz%UnknownIntegerType.build_backend_typeN)r;r<r=r9rJr)r-rrrrre²srec@s eZdZdZdd„Zdd„ZdS)ÚUnknownFloatTyperRcCs||_|d|_dSr_rfrarrrrJÃszUnknownFloatType.__init__cCstd|jƒ‚dS)Nz2float type '%s' can only be used after compilationrgrMrrrr-Çsÿz#UnknownFloatType.build_backend_typeNrNrrrrriÀsric@seZdZdZddd„ZdS)ÚBaseFunctionType)Úargsr#ÚellipsisÚabiNcCs’||_||_||_||_dd„|jDƒ}|jr8| d¡|p@dg}|jd |¡f}|dk    r||dd…|d|dd…}|jj d|¡|_dS)    NcSsg|] }| ¡‘qSrr&)r6Úargrrrr8Õsz-BaseFunctionType.__init__.<locals>.<listcomp>ú...Zvoidz, rrr)    rkr#rlrmÚappendÚ _base_patternÚjoinrr)r!rkr#rlrmZreprargsrrrrrJÏs
 
 ÿzBaseFunctionType.__init__)N©r;r<r=r9rJrrrrrjÌsrjc@s$eZdZdZdZdd„Zdd„ZdS)ÚRawFunctionTypez(&)(%s)TcCstd|fƒ‚dS)NzPcannot render the type %r: it is a function type, not a pointer-to-function type)rrMrrrr-çsÿz"RawFunctionType.build_backend_typecCst|j|j|j|jƒSr*)ÚFunctionPtrTyperkr#rlrmr%rrrÚas_function_pointerësz#RawFunctionType.as_function_pointerN)r;r<r=rqr?r-rvrrrrrtàsrtc@s eZdZdZdd„Zdd„ZdS)ruz(*&)(%s)cCs†|j ||¡}g}|jD]}| | ||¡¡qd}|jdkrh|jshz|jjf}Wntk
rfYnXt    ||dt
|ƒ||jf|žŽS)NrZ    __stdcallZnew_function_type) r#r3rkrprmrlÚ_backendZ FFI_STDCALLÚAttributeErrorrLrG)r!r/r0r#rkÚtpZabi_argsrrrr-òs$
 
ÿÿz"FunctionPtrType.build_backend_typecCst|j|j|j|jƒSr*)rtrkr#rlrmr%rrrÚas_raw_functionszFunctionPtrType.as_raw_functionN)r;r<r=rqr-rzrrrrruïsruc@s"eZdZdZddd„Zdd„ZdS)    Ú PointerType)Útotyper rcCs>||_||_t|dƒ}|jr*d| ¡f}|j d|¡|_dS)Nz *&rr)r|r rr>r
rr)r!r|r ÚextrarrrrJs 
zPointerType.__init__cCs |jj||dd}t||d|ƒS)NT)r1Únew_pointer_type)r|r3rL)r!r/r0ZBItemrrrr-szPointerType.build_backend_typeN)rrNrrrrr{s
r{cCs
t|tƒSr*)r{r    )r|rrrÚConstPointerTypesrc@seZdZdZddd„ZdS)ÚNamedPointerType)r|r7rcCs"t |||¡||_|d|_dSr_)r{rJr7r)r!r|r7r rrrrJszNamedPointerType.__init__N)rrsrrrrr€sr€c@s4eZdZdZdZdd„Zdd„Zdd„Zd    d
„Zd S) Ú    ArrayType)ÚitemÚlengthTcCsF||_||_|dkrd}n|dkr(d}nd|}|jj d|¡|_dS)Nz&[]roz
&[/*...*/]z&[%s]r)r‚rƒrr)r!r‚rƒZbracketsrrrrJ)sÿzArrayType.__init__cCs t|jtƒSr*)Ú
isinstancerƒÚstrr%rrrÚlength_is_unknown6szArrayType.length_is_unknowncCs t|j|ƒSr*)rr‚)r!Z    newlengthrrrÚresolve_length9szArrayType.resolve_lengthcCsH| ¡rtd|fƒ‚|j ||¡t|jƒ ||¡}t||d||jƒS)Nz)cannot render the type %r: unknown lengthZnew_array_type)r†rr‚r3r{rLrƒ)r!r/r0ZBPtrItemrrrr-<sÿzArrayType.build_backend_typeN)    r;r<r=r9r>rJr†r‡r-rrrrr%s  rrWc@s,eZdZdZdZdd„Zdd„Zdd„ZdS)    ÚStructOrUnionOrEnumrRNcCs$|jpd|j|jf}|d|_dS)Nz%s %sr)Ú    forcenameÚkindr7rrarrrÚbuild_c_name_with_markerKsz,StructOrUnionOrEnum.build_c_name_with_markercCs||_| ¡dSr*)r‰r‹)r!r‰rrrÚforce_the_nameOsz"StructOrUnionOrEnum.force_the_namecCs|j d¡st‚|jdd…S)Nréÿÿÿÿ)rÚendswithrr%rrrÚget_official_nameSsz%StructOrUnionOrEnum.get_official_name)r;r<r=r9r‰r‹rŒrrrrrrˆGs
rˆc@sjeZdZdZdZdZdZddd„Zdd„Zdd    d
„Z    d d „Z
dd d„Z dd„Z dd„Z dd„Zdd„ZdS)Ú StructOrUnionNrFcCs*||_||_||_||_||_| ¡dSr*)r7ÚfldnamesÚfldtypesÚ
fldbitsizeÚfldqualsr‹)r!r7r‘r’r“r”rrrrJ^s zStructOrUnion.__init__ccs>|jdk    r:t|j|jƒD] \}}|dkrt|tƒr|VqdS)Nr)r’Úzipr‘r„r)r!r7ÚtyperrrÚanonymous_struct_fieldsfs
z%StructOrUnion.anonymous_struct_fieldsTccs||j}|dkrdt|jƒ}t|j|j|j|ƒD]F\}}}}|dkrht|tƒrh|rh| ¡D]
}|VqZq0||||fVq0dS)N)rr)    r”Úlenr‘r•r’r“r„rÚ
enumfields)r!Zexpand_anonymous_struct_unionr”r7r–Úbitsizer r#rrrr™ls
ÿÿ 
zStructOrUnion.enumfieldsc    Cszg}g}g}g}| ¡D]4\}}}}| |¡| |¡| |¡| |¡qt|ƒ|_t|ƒ|_t|ƒ|_t|ƒ|_dSr*)r™rprGr‘r’r“r”)    r!ÚnamesÚtypesZbitsizesr”r7r–ršr rrrÚ force_flattenzs
 
 
 
 
 
zStructOrUnion.force_flattencCs$t ||||¡}|s | ||¡|Sr*)rˆr3Úfinish_backend_type)r!r/r0r1r2rrrr3Œs 
ÿ zStructOrUnion.get_cached_btypecs0|jr$|jdkr td|jfƒ‚dSˆj|}d|_|jdkrBnä|jdkr¸‡‡fdd„|jDƒ}tt|j||j    ƒƒ}d}|j
rš|j
dkrd}n
d|j
f}ˆj j |||d    d    f|žŽnng}|j\}}}    }
t t|jƒƒD] } || } |j| } t| tƒr„|  ¡r„| j ˆˆ¡}t| ˆ |¡ƒ\}}|dkrR| d
|j|j| pJd f¡|  |¡} |jd| …| f|j| dd…|_|  ˆˆ¡}t| tƒr¸| jdkr¸| dksðt‚n8ˆ |¡}|| krð| d |j|j| päd || f¡| |¡qØtt|j||j    |ƒƒ}ˆj   ||||    |
¡d|_dS) Nrz(recursive structure declaration for '%s'rcsg|]}| ˆˆ¡‘qSr)r3)r6ry©r/r0rrr8¡sÿz5StructOrUnion.finish_backend_type.<locals>.<listcomp>r)érrzfield '%s.%s' has a bogus size?z{}z=field '%s.%s' is declared as %d bytes, but is really %d bytes)Ú    completedrhr7r+r’Ú fixedlayoutÚlistr•r‘r“ÚpackedrwZcomplete_struct_or_unionÚranger˜r„rr†r‚r3ÚdivmodÚsizeofÚ_verification_errorr‡rƒrrp)r!r/r0r2r’ÚlstÚ extra_flagsZfieldofsZ    fieldsizeZ    totalsizeZtotalalignmentrTZfsizeZftypeZ    BItemTypeÚnlenZnrestZ
BFieldTypeZ    bitemsizerrŸrrž“s„
ÿ
 
 
 ÿ
 
 ÿÿ
 
 
ÿÿ
ÿ 
 
þÿÿ  ÿz!StructOrUnion.finish_backend_typecCs t|ƒ‚dSr*)r)r!Úmsgrrrr¨Òsz!StructOrUnion._verification_errorcCs |jr|jdkrt| ¡ƒ‚dSr*)Úpartialr¢rr r%rrrÚcheck_not_partialÕszStructOrUnion.check_not_partialcCs.| ¡| |¡t||d|j| ¡|dS)Nz new_%s_type©Úkey)r®rprLrŠrrMrrrr-Ùs 
ÿz StructOrUnion.build_backend_type)N)T)F)r;r<r=r¢r¡r­r¤rJr—r™rr3ržr¨r®r-rrrrrXs
 
 
?rc@seZdZdZdS)Ú
StructTypeÚstructN©r;r<r=rŠrrrrr±ásr±c@seZdZdZdS)Ú    UnionTypeÚunionNr³rrrrr´åsr´c@sBeZdZdZdZdZddd„Zdd„Zdd    „Zd
d „Z    d d „Z
dS)ÚEnumTypeÚenumFNcCs$||_||_||_||_| ¡dSr*)r7Ú enumeratorsÚ
enumvaluesÚ baseinttyper‹)r!r7r¸r¹rºrrrrJîs
zEnumType.__init__cCs4t ||¡|jdkr0| ¡}d| dd¡|_dS)NrrÚ_)rˆrŒr‰rr)r!r‰r7rrrrŒõs 
zEnumType.force_the_namecCs|jr|jst| ¡ƒ‚dSr*)r­Úpartial_resolvedrr r%rrrr®ûs zEnumType.check_not_partialc
Cs4| ¡| ||¡}t||d| ¡|j|j||dS)NZ new_enum_typer¯)r®Úbuild_baseinttyperLrr¸r¹)r!r/r0Z
base_btyperrrr-ÿs ýzEnumType.build_backend_typec CsJ|jdk    r|j ||¡S|jr4t|jƒ}t|jƒ}nDddl}z t ¡Wntk
r\YnX|     d| 
¡¡d}}|dkr–d}t dƒ}t dƒ}nd}t dƒ}t dƒ}| ||¡}    | ||¡}
|  |    ¡} |  |
¡} |dd    | d>kr|dd    | |>kr|    S|dd    | d>kr6|dd    | |>kr6|
St d
¡ƒ‚dS) NrzU%r has no values explicitly defined; guessing that it is equivalent to 'unsigned int'rrYrZr[r\rr z=%s values don't all fit into either 'long' or 'unsigned long')rºr3r¹ÚminÚmaxÚwarningsÚ__warningregistry__ÚclearÚ    NameErrorÚwarnr rQr§r) r!r/r0Zsmallest_valueZ largest_valuerÀÚsignZ
candidate1Z
candidate2Zbtype1Zbtype2Zsize1Zsize2rrrr½sH
 
  þ
 
 
ÿÿÿzEnumType.build_baseinttype)N) r;r<r=rŠr­r¼rJrŒr®r-r½rrrrr¶és
r¶cCs2|dkrd|}t|dddƒ}| |¡d|_|S)Nz$%sÚ unknown_type)r±rŒÚorigin©r7Z
structnameryrrrrÆ0s 
rÆcCs(|dkrd|}t|dddƒ}t||ƒS)Nz$$%s)r±r€rÈrrrÚunknown_ptr_type8srÉc
CsRt|tjƒrtSt4tt|ƒdƒs2t ¡t|ƒ_    t|ƒj    W5QR£SQRXdS)NÚ __typecache)
r„rœÚ
ModuleTypeÚ_typecache_cffi_backendÚ global_lockÚhasattrr–ÚweakrefÚWeakValueDictionaryrÊ)ÚbackendrrrÚ get_typecacheBs  rÒc
 
OsØ| d||f¡}|rt‚z |j|WStk
r8YnXzt|j|ƒ|Ž}Wn4tk
r‚}ztd|||fƒ‚W5d}~XYnX|j}t@| |¡}    |    dkrº|||<|W5QR£S|    W5QR£SW5QRXdS)Nr°z
%s: %r: %s)    ÚpoprZ
_typecacher,r5rwrhrÍÚget)
Zsrctyper/ÚfuncnamerkÚkwdsr°ÚresÚeÚcacheZres1rrrrLMs" $
rLcCstd|d|ƒS)Nú?r~rK)r/r2rrrÚ pointer_cachedsrÛcCs@|jr<t|jdƒtkr<d||jdff|jdd…|_dS)Nrz%s: %sr)rkr–r…)rØr7rrrÚattach_exception_infogsrÜ)N)N)-rœrÏÚlockrÚerrorrrrr    r r rÚobjectrr@rIZ    void_typerOrQrerirjrtrur{Z
voidp_typerZconst_voidp_typer€rZchar_array_typerˆrr±r´r¶rÆrÉrÍrÐrÌrÒrLrÛrÜrrrrÚ<module>sN  /     L     
G