zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
U
L±dl­ã@s@ddlZddlZddlmZddlmZGdd„deƒZdZdS)éNé)Úmodel©ÚVerificationErrorc@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_„Z<eZ=eZ>d`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úGd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\cffi/vengine_cpy.pyÚ__init__ szVCPythonEngine.__init__cCsdSrr)r ÚkwdsrrrÚpatch_extension_kwdssz#VCPythonEngine.patch_extension_kwdscCsRzt ||¡\}}}Wntk
r,YdSX|dk    r>| ¡|d|krNdS|S©Nr)ÚimpÚ find_moduleÚ ImportErrorÚclose)r Ú module_nameÚpathZ so_suffixesÚfÚfilenameÚdescrrrrrs zVCPythonEngine.find_modulecCsi|_| d¡dS)NZ collecttype)Ú
_typesdictÚ    _generate©r rrrÚ collect_types$szVCPythonEngine.collect_typesÚcCs|j |d¡dS)NÚ
)Z_fÚwrite)r ÚwhatrrrÚ_prnt(szVCPythonEngine._prntcCs
|j|Sr)r)r ÚtyperrrÚ _gettypenum+szVCPythonEngine._gettypenumcCs8t|tjƒr|jdkr4||jkr4t|jƒ}||j|<dS)Nú long double)Ú
isinstancerÚ PrimitiveTypeÚnamerÚlen)r ÚtpÚnumrrrÚ_do_collect_type/s ÿþ
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    ÚpreamblerÚ_generate_setup_customÚget_module_name)r ÚprntÚmodnameÚ    constantsrrrÚwrite_source_to_f6st
 
 
 
 
    z VCPythonEngine.write_source_to_fNc
svt ¡z¤ttdƒrt ¡}zvz6ttdƒr<|dk    r<t |¡t ˆj     ¡ˆjj
¡‰Wn:t k
rŽ}zdˆjj
|f}t |ƒ‚W5d}~XYnXW5ttdƒr¨t |¡XW5t ¡Xˆ  ˆd¡tdd„ˆj ¡Dƒƒ‰‡fdd„ttˆƒƒDƒ}ttˆjj|ƒƒ}G‡‡‡fdd    „d    tƒ‰ˆƒ}ˆ |t |¡rRd
dl}| d ˆj     ¡¡ˆj ˆd |d ˆjˆ_ˆjˆ_|S)NÚgetdlopenflagsÚsetdlopenflagszimporting %r: %sZloadingcSsg|]\}}||f‘qSrr)Ú.0ÚkeyÚvaluerrrÚ
<listcomp>¬sÿz/VCPythonEngine.load_library.<locals>.<listcomp>csg|] }ˆ|‘qSrr©rAÚi)Ú
revmappingrrrD®scs&eZdZ”Z”jZgZ‡fdd„ZdS)z/VCPythonEngine.load_library.<locals>.FFILibrarycsˆjt|jƒSr)Ú    _cffi_dirÚlistÚ__dict__r)Ú
FFILibraryrrÚ__dir__ºsz7VCPythonEngine.load_library.<locals>.FFILibrary.__dir__N)Ú__name__Ú
__module__Ú __qualname__Z_cffi_python_moduler
Z    _cffi_ffirHrLr)rKÚmoduler rrrK¶srKrz0reimporting %r might overwrite older definitionsZloaded©Úlibrary)rÚ acquire_lockÚ release_lockÚhasattrÚsysr?r@Z load_dynamicr    r:ZmodulefilenamerrÚ_loadÚdictrÚitemsÚranger,rIÚmapr
Ú_get_cached_btypeÚobjectZ _cffi_setupÚwarningsÚwarnZ_cffi_original_ffir Z_cffi_types_of_builtin_funcs)r ÚflagsZprevious_flagsÚeÚerrorÚlstrRr^r)rKrPrGr rÚ load_library‘sB
 
 ÿ
 
 ÿÿzVCPythonEngine.load_librarycCs$dd„|jjj ¡Dƒ}| ¡|S)NcSsg|]\}\}}||f‘qSrr)rArBr-ZqualrrrrDÌs
z4VCPythonEngine._get_declarations.<locals>.<listcomp>)r
Ú_parserZ _declarationsrYÚsort)r rcrrrÚ_get_declarationsËs
 ÿz VCPythonEngine._get_declarationsc Csž| ¡D]\}}| dd¡\}}zt|d||fƒ}Wn tk
rVtd|ƒ‚YnXz|||ƒWqtk
r–}zt ||¡‚W5d}~XYqXqdS)Nú rz_generate_cpy_%s_%sznot implemented in verify(): %r)rgÚsplitÚgetattrÚAttributeErrorrÚ    ExceptionrÚattach_exception_info)r Ú    step_namer+r-ÚkindÚrealnamer1rarrrrÑsÿ ÿ
 zVCPythonEngine._generatec
Ks~| ¡D]p\}}| dd¡\}}t|d||fƒ}z||||f|ŽWqtk
rv}    zt |    |¡‚W5d}    ~    XYqXqdS)Nrhrz
_%s_cpy_%s)rgrirjrlrrm)
r rPrnrr+r-rorpr1rarrrrWàs zVCPythonEngine._loadcCsdSrr©r r-r+rrrÚ_generate_nothingêsz VCPythonEngine._generate_nothingcKsdSrr©r r-r+rPrrrrÚ _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_%srhÚ_z-1z6  if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)z    %s;z(%s)_cffi_to_c_pointerz, _cffi_type(%d)ÚNULLz  %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)r r-ÚfromvarÚtovarÚerrcodeZextraargÚ    converterZerrvaluerrrÚ_convert_funcarg_to_còsB  
 ÿ ÿÿ ÿ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)rr{Úadd)r r-Ú    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;r4)r%r')r r-rr‚rƒrrrr|s 
ÿ
ÿÿ
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 dkrÔt d    | ¡|fƒ‚d
|| |¡fSt|tjƒrd|| |¡fSt|ƒ‚dS) Nruz_cffi_from_c_int(%s, %s)r(z_cffi_from_c_%s(%s)rhrvz/_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*rxr+rzr'r{rÚ    ArrayTypeÚitemr}ÚfldnamesÚ    TypeErrorÚ _get_c_namer~r€)r r-ÚvarÚcontextrrrÚ_convert_expr_from_c*sF 
ÿÿ ÿ 
ÿÿÿz#VCPythonEngine._convert_expr_from_ccCsHt|tjƒst‚|jr"| |¡n"|jD]}| |¡q(| |j¡dSr)r)rrÚAssertionErrorÚellipsisr/ÚargsÚresult)r r-r+r&rrrÚ"_generate_cpy_function_collecttypeQs  
 z1VCPythonEngine._generate_cpy_function_collecttypec
Cs¸t|tjƒst‚|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|jtjƒ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$| |jd%d&¡ƒ|
D]}|d'|ƒq`|d(ƒn(|
D]}|d'|ƒq‚|d)ƒ|d*ƒ|d+ƒ|ƒdS),NFrZnoargrZarg0r”ústatic PyObject *z(_cffi_f_%s(PyObject *self, PyObject *%s)r2zargument 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%drrErrrrD‰sz>VCPythonEngine._generate_cpy_function_decl.<locals>.<listcomp>r3zarg%dúx%dz return NULLz  Py_BEGIN_ALLOW_THREADSz  _cffi_restore_errno();z  { %s%s(%s); }cSsg|] }d|‘qS)ršrrErrrrD–sz  _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;r5)r)rrr’r“Ú_generate_cpy_constr%r,r”Ú    enumerateryÚsetr‰Úsortedr•ZVoidTyperZÚjoinr…r‘)r r-r+r;ÚnumargsÚargnamerrFr&r‡rˆr0Z 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%)r r-r+r¢ÚmethrrrÚ_generate_cpy_function_method¬s
z,VCPythonEngine._generate_cpy_function_methodcCs.|jr
dSt||ƒ}t|||ƒ||j|<dSr)r“rjÚsetattrr )r r-r+rPrRÚfuncrrrÚ_loaded_cpy_functionºs
 
 z#VCPythonEngine._loaded_cpy_functioncCs ||jkst‚| |d|¡dS©NÚstruct©r+r’Ú_generate_struct_or_union_declrqrrrÚ_generate_cpy_struct_declÅsz(VCPythonEngine._generate_cpy_struct_declcCs| |d|¡dSr«©Ú _generate_struct_or_union_methodrqrrrÚ_generate_cpy_struct_methodÈsz*VCPythonEngine._generate_cpy_struct_methodcCs| |d||¡dSr«©Ú_loading_struct_or_union©r r-r+rPrrrÚ_loading_cpy_structÊsz"VCPythonEngine._loading_cpy_structcKs| |¡dSr©Ú_loaded_struct_or_unionrsrrrÚ_loaded_cpy_structÌsz!VCPythonEngine._loaded_cpy_structcCs ||jkst‚| |d|¡dS©NÚunionr­rqrrrÚ_generate_cpy_union_declÐsz'VCPythonEngine._generate_cpy_union_declcCs| |d|¡dSrºr°rqrrrÚ_generate_cpy_union_methodÓsz)VCPythonEngine._generate_cpy_union_methodcCs| |d||¡dSrºr³rµrrrÚ_loading_cpy_unionÕsz!VCPythonEngine._loading_cpy_unioncKs| |¡dSrr·rsrrrÚ_loaded_cpy_union×sz VCPythonEngine._loaded_cpy_unionc Cs |jdkrdSd||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    k
rø} z|dt
| ƒƒW5d} ~ XYqlXql|dƒ|dƒ|d|fƒ|dƒ|d|ƒ|dƒ|d|ƒ|dƒ| ¡D]h\}}    }
} |
dkrlqR|d||fƒt|    tj ƒr¨|    j dkr¨|d|      ¡ƒn|d||fƒqR|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)r2z8  /* 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 */r5r—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*rxryrÚstrrŠÚlengthrŽ) r r-Úprefixr+Z checkfuncnameÚlayoutfuncnameÚcnamer;ÚfnameÚftypeÚfbitsizeÚfqualrarrrr®Ús`
   ÿÿþ $  
z-VCPythonEngine._generate_struct_or_union_declcCs0|jdkrdSd||f}| d||f¡dS)NrÀz   {"%s", %s, METH_NOARGS, NULL},)rŒr%)r r-rÆr+rÇrrrr± s 
 ÿz/VCPythonEngine._generate_struct_or_union_methodc CsÊ|jdkrdSd||f}t||ƒ}|ƒ}t|tjƒr¨|jr¨|d}|d}    |ddd…}
|ddd…} | ¡t|
ƒt| ƒkr’t|jƒks˜nt‚|
| ||    f|_    nd||f 
¡} || f|j |<dS)NrÀrréérÁ) rŒrjr)rr}ÚpartialZ force_flattenr,r’Z fixedlayoutrÂr ) r r-rÆr+rPrÇÚfunctionÚlayoutZ    totalsizeZtotalalignmentZfieldofsZ    fieldsizerÈrrrr´s
 
(z'VCPythonEngine._loading_struct_or_unionc Cs|jdkrdS|j |¡||jkrdd„}|j}| |¡}|j |¡\}}||d| |¡dƒ||d| |¡dƒd}| ¡D]v\}}    }
} |
dkrœq†|||| ||¡d|fƒ||ddkrô| |    ¡} |||d| | ¡d    |fƒ|d7}q†|t    |ƒkst
‚dS)
NcSs||krtd|||fƒ‚dS)Nz'%s (we have %d, but C compiler says %d)r)Z    realvalueZ expectedvalueÚmsgrrrÚcheck0s ÿÿz5VCPythonEngine._loaded_struct_or_union.<locals>.checkrzwrong total sizerzwrong total alignmentrÍzwrong offset for field %rzwrong size for field %r) rŒr
r\r ÚpopÚsizeofZalignofrÃZoffsetofr,r’) r r-rÓr
ZBStructrÑrÈrFrÉrÊrËrÌZBFieldrrrr¸)s0
 
ÿ
ÿ
z&VCPythonEngine._loaded_struct_or_unioncCs.t|tjƒr| ||d¡n| |d|¡dS©Nr!)r)rr~Ú_generate_cpy_enum_declr®rqrrrÚ_generate_cpy_anonymous_declMs z+VCPythonEngine._generate_cpy_anonymous_declcCst|tjƒs| |d|¡dSrÖ)r)rr~r±rqrrrÚ_generate_cpy_anonymous_methodSs z-VCPythonEngine._generate_cpy_anonymous_methodcCs0t|tjƒr| |||¡n| |d||¡dSrÖ)r)rr~Ú_loading_cpy_enumr´rµrrrÚ_loading_cpy_anonymousWs z%VCPythonEngine._loading_cpy_anonymouscKs.t|tjƒr |j|||f|Žn
| |¡dSr)r)rr~Ú_loaded_cpy_enumr¸rsrrrÚ_loaded_cpy_anonymous]s z$VCPythonEngine._loaded_cpy_anonymousÚconstFc     Cst|j}    d||f}
|    d|
ƒ|    dƒ|    dƒ|    dƒ|sT|    d|pD| d|¡ƒn |dks`t‚|dk    rt| ||¡|s¾|d    krŠd
|} n|} |    d | fƒ|    d | |d d¡fƒ|sÊt‚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)r2z  PyObject *o;z
  int res;r˜z irÞrú&z   i = (%s);z      o = %s;rFz 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;r4z-  res = PyObject_SetAttrString(lib, "%s", o);z  Py_DECREF(o);z  if (res < 0)ú   return %s;ú(lib)r5)r%ryr’Ú_check_int_constant_valuer‘r6) r Úis_intr+r-ÚcategoryÚvartpÚdelayedÚsize_tooÚ check_valuer;ÚfuncnameZrealexprrrrrfsR    
 ÿ
 
 ÿ z"VCPythonEngine._generate_cpy_constcCs&t|tjƒo| ¡}|s"| |¡dSr)r)rr*rxr/©r r-r+rårrrÚ"_generate_cpy_constant_collecttype–sz1VCPythonEngine._generate_cpy_constant_collecttypecCs&t|tjƒo| ¡}| |||¡dSr)r)rr*rxr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ár4)r%)r r+rCZ
err_prefixr;rrrrä¦s8ÿ
ÿ  ÿÿz(VCPythonEngine._check_int_constant_valuecCs| dd¡}d||fS)Nú$Z___D_z _cffi_e_%s_%s)rz)r rÆ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ßr2z    enum %s: rârãr5)    rÏÚ enumeratorsrrðr%ÚzipÚ
enumvaluesrär6)r r-r+rÆÚ
enumeratorrër;Ú    enumvaluerrrr×Às 
  ÿz&VCPythonEngine._generate_cpy_enum_declcs.|jr*‡fdd„|jDƒ}t|ƒ|_d|_dS)Ncsg|]}tˆ|ƒ‘qSr)rj)rArõ©rPrrrD×sÿz4VCPythonEngine._loading_cpy_enum.<locals>.<listcomp>T)rÏròÚtuplerôZpartial_resolved)r r-r+rPrôrr÷rrÚÕs 
ÿ
z VCPythonEngine._loading_cpy_enumcCs(t|j|jƒD]\}}t|||ƒqdSr)róròrôr¨)r r-r+rPrRrõrörrrrÜÜszVCPythonEngine._loaded_cpy_enumcCs&|dkrd}n|}|jd||ddS)Nz...T)rê)r)r r-r+rêrrrÚ_generate_cpy_macro_declãsz'VCPythonEngine._generate_cpy_macro_declcCs2t|tjƒrt |j¡}n
t |¡}| |¡dSr)r)rrŠr{r‹r/©r r-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Šr{r‹rÚlength_is_unknownrúrrrÚ_generate_cpy_variable_declùs   ÿ
z*VCPythonEngine._generate_cpy_variable_declc st||ƒ}t|tjƒr°| ¡r|t|tƒs,t‚|\}}|j |j    ¡}t
||j  |¡ƒ\}}    |    dkrrt d||j    fƒ‚|  |¡}|jdk    r¬|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ˆdSrrrQ©ÚptrrrÚgettersz3VCPythonEngine._loaded_cpy_variable.<locals>.gettercs |ˆd<dSrr)rRrCrþrrÚsetter sz3VCPythonEngine._loaded_cpy_variable.<locals>.setter)rjr)rrŠrürør’r
r\r‹ÚdivmodrÕrZresolve_lengthrÅÚcastr¨Údelattrr&ÚpropertyrHÚappend) r r-r+rPrRrCÚsizeZ    BItemTyperÅÚrestZBArrayrrrrþrÚ_loaded_cpy_variables2
 ÿÿ
 
 
  z#VCPythonEngine._loaded_cpy_variablecCs4|j}|dƒ|dƒ|d|jdƒ|dƒdS)Nz,static int _cffi_setup_custom(PyObject *lib)r2râTr5)r%r6)r r;rrrr9's
z%VCPythonEngine._generate_setup_custom)r!)N)NrÞNTFN)r!)rñ)LrMrNrOZ
_class_keyZ_gen_python_modulerrrr r%r'r/r>rdrgrrWrrrtr…r‰r|r‘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_variabler    r9rrrrr    sœ
[
:
$  P 
3"    þ
0
 
    "raí(
#include <Python.h>
#include <stddef.h>
 
/* 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
 
#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))
 
/**********/
)    rVrr!rrbrr]rr7rrrrÚ<module>s  +