3
ãde<h  ã               @   sH   d dl Z d dlZd dlZddlmZ ddlmZ G dd„ deƒZdZ	dS )é    Né   )Úmodel)ÚVerificationErrorc               @   s„  e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ ZdZdd„Z	dd„ Z
d[dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZeZeZeZdd„ ZeZdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d\d=d>„Z$d?d@„ Z%eZ&d]dAdB„Z'dCdD„ Z(dEdF„ Z)dGdH„ Z*dIdJ„ Z+d^dLdM„Z,d_dNdO„Z-dPdQ„ Z.dRdS„ Z/eZ0dTdU„ Z1dVdW„ Z2eZ3dXdY„ Z4d;S )`ÚVGenericEngineÚgFc             C   s   || _ |j| _g | _i | _d S )N)ÚverifierÚffiÚexport_symbolsÚ_struct_pending_verification)Úselfr   © r   úG/var/www/agendate/envp3/lib/python3.6/site-packages/cffi/vengine_gen.pyÚ__init__   s    zVGenericEngine.__init__c             C   s   |j d| jƒ d S )Nr	   )Ú
setdefaultr	   )r   Úkwdsr   r   r   Úpatch_extension_kwds   s    z#VGenericEngine.patch_extension_kwdsc             C   sT   xN|D ]F}|| }|d kr t j}x*|D ]"}tjj||ƒ}tjj|ƒr&|S q&W qW d S )N)ÚsysÚpathÚosÚjoinÚisfile)r   Úmodule_namer   Zso_suffixesZ	so_suffixÚbasenameÚdirnameÚfilenamer   r   r   Úfind_module   s    

zVGenericEngine.find_modulec             C   s   d S )Nr   )r   r   r   r   Úcollect_types%   s    zVGenericEngine.collect_typesÚ c             C   s   | j j|d ƒ d S )NÚ
)Ú_fÚwrite)r   Úwhatr   r   r   Ú_prnt(   s    zVGenericEngine._prntc             C   s`   | j }|tƒ || jjƒ | jdƒ tjdkr\tjdkr>d}nd}| jjƒ }|d||f ƒ d S )NÚdeclÚwin32é   ZPyInit_Úinitzvoid %s%s(void) { }
)r%   )	r"   Úcffimod_headerr   ÚpreambleÚ	_generater   ÚplatformÚversion_infoZget_module_name)r   ÚprntÚprefixÚmodnamer   r   r   Úwrite_source_to_f+   s    



z VGenericEngine.write_source_to_fr   c                sj   ˆj j}tjjtjˆjjƒ}|j||ƒ‰ˆj	ˆdƒ G ‡ ‡‡fdd„dt
jƒ‰ ˆ dƒ}ˆj	ˆd|d� |S )NZloadingc                   s&   e Zd Z”Z”jZg Z‡ fdd„ZdS )z/VGenericEngine.load_library.<locals>.FFILibraryc                s   ˆ j S )N)Ú	_cffi_dir)r   )Ú
FFILibraryr   r   Ú__dir__T   s    z7VGenericEngine.load_library.<locals>.FFILibrary.__dir__N)Ú__name__Ú
__module__Ú__qualname__Z_cffi_generic_moduler   Z	_cffi_ffir0   r2   r   )r1   Úmoduler   r   r   r1   P   s   r1   r   Zloaded)Úlibrary)r   Ú_backendr   r   r   Úcurdirr   ZmodulefilenameÚload_libraryÚ_loadÚtypesÚ
ModuleType)r   ÚflagsÚbackendr   r7   r   )r1   r6   r   r   r:   A   s    zVGenericEngine.load_libraryc             C   s$   dd„ | j jjjƒ D ƒ}|jƒ  |S )Nc             S   s   g | ]\}\}}||f‘qS r   r   )Ú.0ÚkeyÚtpZqualr   r   r   ú
<listcomp>^   s    z4VGenericEngine._get_declarations.<locals>.<listcomp>)r   Ú_parserZ_declarationsÚitemsÚsort)r   Úlstr   r   r   Ú_get_declarations]   s    z VGenericEngine._get_declarationsc             C   s¢   xœ| j ƒ D ]�\}}|jddƒ\}}yt| d||f ƒ}W n  tk
rX   td| ƒ‚Y nX y|||ƒ W q
 tk
r˜ } ztj||ƒ ‚ W Y d d }~X q
X q
W d S )Nú r   z_generate_gen_%s_%sznot implemented in verify(): %r)rH   ÚsplitÚgetattrÚAttributeErrorr   Ú	Exceptionr   Úattach_exception_info)r   Ú	step_nameÚnamerB   ÚkindÚrealnameÚmethodÚer   r   r   r)   c   s    zVGenericEngine._generatec       
      K   s‚   x|| j ƒ D ]p\}}|jddƒ\}}t| d||f ƒ}y||||f|Ž W q
 tk
rx }	 ztj|	|ƒ ‚ W Y d d }	~	X q
X q
W d S )NrI   r   z
_%s_gen_%s)rH   rJ   rK   rM   r   rN   )
r   r6   rO   r   rP   rB   rQ   rR   rS   rT   r   r   r   r;   r   s    zVGenericEngine._loadc             C   s   d S )Nr   )r   rB   rP   r   r   r   Ú_generate_nothing|   s    z VGenericEngine._generate_nothingc             K   s   d S )Nr   )r   rB   rP   r6   r   r   r   r   Ú_loaded_noop   s    zVGenericEngine._loaded_noopc                sˆ  t |tjƒst‚|jr(| jd||ƒ d S | j}t|jƒ}g }x<t	|jƒD ].\}}d}t |tj
ƒrdd}|jd||f ƒ qHW d| ‰ ‡ fdd„t|j|ƒD ƒ}	|j}
t |
tj
ƒrÈ|	jd|
jd	ˆ ƒƒ tj}
d
j|	ƒpÔd}	d| }| jj|ƒ |jrü|jd }nd}d|||	f }d| ‰ ||
j|ˆ ƒƒ |dƒ t |jtj
ƒ�rDd}nt |jtjƒ�sZd}nd}|d||d
j|ƒf ƒ |dƒ |ƒ  d S )NFr   Ú*z%sx%dzargument of %sc                s    g | ]\}}|j d | ˆ ƒ‘qS )z %s)Ú
get_c_name)r@   ÚtypeÚarg)Úcontextr   r   rC   �   s   z>VGenericEngine._generate_gen_function_decl.<locals>.<listcomp>r   z *rz, Úvoidz
_cffi_f_%srI   z	 %s%s(%s)zresult of %sÚ{z*r = zreturn z  %s%s(%s);Ú})Ú
isinstancer   ÚFunctionPtrTypeÚAssertionErrorÚellipsisÚ_generate_gen_constr"   ÚlenÚargsÚ	enumerateÚStructOrUnionÚappendÚzipÚresultÚinsertrX   Ú	void_typer   r	   ÚabiZVoidType)r   rB   rP   r,   ZnumargsÚargnamesÚirY   ZindirectionZarglistZtpresultÚwrappernamerm   ZfuncdeclZresult_coder   )r[   r   Ú_generate_gen_function_declŒ   sJ    

z*VGenericEngine._generate_gen_function_declc             C   sr  t |tjƒst‚|jr*| jd|||ƒ}�n(g }|}tdd„ |jD ƒƒsVt |jtj	ƒ�rg }xDt
|jƒD ]6\}	}
t |
tj	ƒr’tj|
ƒ}
|j|	|
fƒ |j|
ƒ qfW |j}t |tj	ƒrú|jd krÎtd|jƒ f ƒ‚tj|ƒ}|jd|ƒ |jdd|fƒ tj}tjt|ƒ||jƒ}| jj|ƒ}d| }|j||ƒ}x"|D ]\}	}
| j||	|
|ƒ}�q4W t|||ƒ t|ƒjj|ƒ d S )NFc             s   s   | ]}t |tjƒV  qd S )N)r_   r   rg   )r@   Útypr   r   r   ú	<genexpr>Â   s    z6VGenericEngine._loaded_gen_function.<locals>.<genexpr>z*'%s' is used as result type, but is opaquer   rj   z
_cffi_f_%s)r_   r   r`   ra   rb   Ú_load_constantÚanyre   rj   rg   rf   ÚPointerTyperh   ZfldtypesÚ	TypeErrorÚ_get_c_namerk   rl   Útupler   Ú_get_cached_btypeÚload_functionÚ_make_struct_wrapperÚsetattrrY   r0   )r   rB   rP   r6   r7   ZnewfunctionZindirectionsÚbase_tpZindirect_argsro   rr   Zindirect_resultÚBFuncrp   r   r   r   Ú_loaded_gen_function»   s@    





z#VGenericEngine._loaded_gen_functionc                sP   | j j‰| j j|ƒ‰ ˆdkr4| j ‰‡ ‡‡fdd„}n‡ ‡‡‡fdd„}||_|S )Nrj   c                 s    ˆj ˆ ƒ}ˆ|f| žŽ  |d S )Nr   )Únew)re   Úres)ÚBTyper   Úoldfuncr   r   Únewfuncä   s    
z4VGenericEngine._make_struct_wrapper.<locals>.newfuncc                 s6   | d ˆ… ˆj ˆ | ˆ ƒf | ˆd d …  } ˆ| Ž S )Nr   )Znewp)re   )rƒ   r?   ro   r„   r   r   r…   é   s    .)r   r8   rz   Z_cffi_base_type)r   r„   ro   rB   r~   r…   r   )rƒ   r?   r   ro   r„   r   r|   ß   s    z#VGenericEngine._make_struct_wrapperc             C   s    ||j kst‚| j|d|ƒ d S )NÚstruct)rP   ra   Ú_generate_struct_or_union_decl)r   rB   rP   r   r   r   Ú_generate_gen_struct_declò   s    z(VGenericEngine._generate_gen_struct_declc             C   s   | j |d||ƒ d S )Nr†   )Ú_loading_struct_or_union)r   rB   rP   r6   r   r   r   Ú_loading_gen_structö   s    z"VGenericEngine._loading_gen_structc             K   s   | j |ƒ d S )N)Ú_loaded_struct_or_union)r   rB   rP   r6   r   r   r   r   Ú_loaded_gen_structù   s    z!VGenericEngine._loaded_gen_structc             C   s    ||j kst‚| j|d|ƒ d S )NÚunion)rP   ra   r‡   )r   rB   rP   r   r   r   Ú_generate_gen_union_declü   s    z'VGenericEngine._generate_gen_union_declc             C   s   | j |d||ƒ d S )Nr�   )r‰   )r   rB   rP   r6   r   r   r   Ú_loading_gen_union   s    z!VGenericEngine._loading_gen_unionc             K   s   | j |ƒ d S )N)r‹   )r   rB   rP   r6   r   r   r   r   Ú_loaded_gen_union  s    z VGenericEngine._loaded_gen_unionc             C   s  |j d krd S d||f }d||f }d||f jƒ }| j}|d||f ƒ |dƒ |dƒ |dƒ xš|jƒ D ]Ž\}}	}
}t|	tjƒrŽ|	jƒ s–|
dkr¤|d	| ƒ qny$|d
|	jdd| |d�|f ƒ W qn t	k
rú } z|dt
|ƒ ƒ W Y d d }~X qnX qnW |dƒ | jj|ƒ |d|f ƒ |dƒ |d| ƒ |dƒ |d| ƒ |dƒ xt|jƒ D ]h\}}	}
}|
dk�rv�q\|d||f ƒ t|	tjƒ�r²|	jd k�r²|d|	jƒ  ƒ n|d||f ƒ �q\W |dƒ |dƒ |dƒ |dƒ |d|f ƒ |dƒ |ƒ  d S )Nz_cffi_check_%s_%sz_cffi_layout_%s_%sz%s %szstatic void %s(%s *p)r]   z8  /* only to generate compile-time warnings or errors */z
  (void)p;r   z  (void)((p->%s) << 1);z  { %s = &p->%s; (void)tmp; }z*tmpzfield %r)Zqualsz
  /* %s */r^   zintptr_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"   Ú
enumfieldsr_   r   ÚPrimitiveTypeÚis_integer_typerX   r   Ústrr	   rh   Ú	ArrayTypeÚlengthrx   )r   rB   r-   rP   ZcheckfuncnameÚlayoutfuncnameÚcnamer,   ÚfnameÚftypeÚfbitsizeÚfqualrT   r   r   r   r‡     sT    
&
z-VGenericEngine._generate_struct_or_union_declc             C   s
  |j d krd S d||f }| jjdƒd }|j||ƒ}g }d}	x(||	ƒ}
|
dk rRP |j|
ƒ |	d7 }	q@W t|tjƒrè|jrè|d }|d }|dd d… }|dd d… }|j	ƒ  t
|ƒt
|ƒ  koÎt
|j ƒkn  sØt‚||||f|_nd||f jƒ }||f| j|< d S )Nz_cffi_layout_%s_%szintptr_t(*)(intptr_t)r   r   é   r%   z%s %s)r‘   r   Ú_typeof_lockedr{   rh   r_   r   rg   ÚpartialZforce_flattenrd   ra   Zfixedlayoutr’   r
   )r   rB   r-   rP   r6   r™   r   ÚfunctionÚlayoutÚnumÚxZ	totalsizeZtotalalignmentZfieldofsZ	fieldsizerš   r   r   r   r‰   7  s.    
 
*z'VGenericEngine._loading_struct_or_unionc             C   s  |j d krd S | jj|ƒ || jk�rdd„ }| j}|j|ƒ}| jj|ƒ\}}||d |j|ƒdƒ ||d |j|ƒdƒ d}x‚|jƒ D ]v\}}	}
}|
dkržqˆ||| |j||ƒd|f ƒ ||d  dkrö|j|	ƒ}|||d  |j|ƒd	|f ƒ |d7 }qˆW |t	|ƒk�st
‚d S )
Nc             S   s   | |krt d||| f ƒ‚d S )Nz'%s (we have %d, but C compiler says %d))r   )Z	realvalueZexpectedvalueÚmsgr   r   r   ÚcheckZ  s    z5VGenericEngine._loaded_struct_or_union.<locals>.checkr   zwrong total sizer   zwrong total alignmentrŸ   zwrong offset for field %rzwrong size for field %r)r‘   r   rz   r
   ÚpopÚsizeofZalignofr“   Zoffsetofrd   ra   )r   rB   r§   r   ZBStructr£   rš   ro   r›   rœ   r�   rž   ZBFieldr   r   r   r‹   S  s,    


z&VGenericEngine._loaded_struct_or_unionc             C   s.   t |tjƒr| j||dƒ n| j|d|ƒ d S )Nr   )r_   r   ÚEnumTypeÚ_generate_gen_enum_declr‡   )r   rB   rP   r   r   r   Ú_generate_gen_anonymous_declu  s    z+VGenericEngine._generate_gen_anonymous_declc             C   s2   t |tjƒr| j|||dƒ n| j|d||ƒ d S )Nr   )r_   r   rª   Ú_loading_gen_enumr‰   )r   rB   rP   r6   r   r   r   Ú_loading_gen_anonymous{  s    z%VGenericEngine._loading_gen_anonymousc             K   s.   t |tjƒr | j|||f|Ž n
| j|ƒ d S )N)r_   r   rª   Ú_loaded_gen_enumr‹   )r   rB   rP   r6   r   r   r   r   Ú_loaded_gen_anonymous�  s    z$VGenericEngine._loaded_gen_anonymousNÚconstc       
      C   sD  | j }d||f }| jj|ƒ |d k	rl|s.t‚|dks:t‚|d| ƒ |dƒ | j||ƒ |dƒ |dƒ nÎ|r¶|dks|t‚|d| ƒ |dƒ |d|f ƒ |d	|f ƒ |dƒ n„|d k	sÂt‚|d ksÎt‚|d
krÜd}nd}d}	|dkoöt|tjƒ�rd}	d}||jd|	|f |ƒƒ |dƒ |d||f ƒ |dƒ |ƒ  d S )Nz_cffi_%s_%sr±   zint %s(char *out_error)r]   z  return 0;r^   zint %s(long long *out_value)z  *out_value = (long long)(%s);z  return (%s) <= 0;Úvarú&r   zconst *z %s%s(void)z  return (%s%s);)	r"   r	   rh   ra   Ú_check_int_constant_valuer_   r   rg   rX   )
r   Úis_intrP   rB   ÚcategoryÚcheck_valuer,   ÚfuncnameZ	ampersandÚextrar   r   r   rc   Š  s@    

z"VGenericEngine._generate_gen_constc             C   s&   t |tjƒo|jƒ }| j|||ƒ d S )N)r_   r   r”   r•   rc   )r   rB   rP   rµ   r   r   r   Ú_generate_gen_constant_decl¯  s    z*VGenericEngine._generate_gen_constant_declc             C   s  d| }|d k	r*|st ‚| j||ƒ |}nì|r²| jjdƒd }| jjdƒd }	|j|	|ƒ}
| jj|ƒ}|
|ƒ}t|d ƒ}|dk r°| r°| jjdƒd }|dd| jj|ƒ > 7 }nd|d ks¾t ‚d}t|t	j
ƒrÖd	| }| jj|j||ƒƒd }	|j|	|ƒ}
|
ƒ }t|t	j
ƒ�r|d }|S )
Nz_cffi_const_%sz
long long*r   zint(*)(long long*)z	long longr   é   z	(*)(void)rW   )ra   Ú_load_known_int_constantr   r    r{   r�   Úintr©   r_   r   rg   rX   )r   rµ   rB   rP   r6   r·   r¸   Úvaluerƒ   r   r¢   ÚpÚnegativeZ	BLongLongZfntypeextrar   r   r   rt   µ  s2    zVGenericEngine._load_constantc             C   sD   t |tjƒo|jƒ }| j||||ƒ}t|||ƒ t|ƒjj|ƒ d S )N)	r_   r   r”   r•   rt   r}   rY   r0   rh   )r   rB   rP   r6   r7   rµ   r¾   r   r   r   Ú_loaded_gen_constantÑ  s    z#VGenericEngine._loaded_gen_constantc             C   sœ   | j }|dkr"|d|||f ƒ n|d|||f ƒ |dƒ |d| ƒ |d| ƒ |dƒ |d| ƒ |d	ƒ |d
|d d… |f ƒ |dƒ |dƒ d S )Nr   z&  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");éd   z    return -1;z  })r"   )r   rP   r¾   r,   r   r   r   r´   Ú  s     z(VGenericEngine._check_int_constant_valuec             C   sr   | j jdƒd }| j jdƒd }|j||ƒ}| j j|dƒ}||ƒdk rn| j j|ƒ}tjdkrft|dƒ}t|ƒ‚d S )Nzchar[]r   zint(*)(char*)é   r%   zutf-8)r%   )	r   r    r{   r�   Ústringr   r+   r–   r   )r   r6   r¸   rƒ   r   r¢   r¿   Úerrorr   r   r   r¼   í  s    

z'VGenericEngine._load_known_int_constantc             C   s   |j ddƒ}d||f S )Nú$Z___D_z_cffi_e_%s_%s)Úreplace)r   r-   rP   r   r   r   Ú_enum_funcnameø  s    zVGenericEngine._enum_funcnameÚenumc             C   sš   |j r&x|jD ]}| jd|ƒ qW d S | j||ƒ}| jj|ƒ | j}|d| ƒ |dƒ x&t|j|jƒD ]\}}| j	||ƒ qhW |dƒ |dƒ |ƒ  d S )NTzint %s(char *out_error)r]   z  return 0;r^   )
r¡   Úenumeratorsrc   rÈ   r	   rh   r"   ri   Ú
enumvaluesr´   )r   rB   rP   r-   Ú
enumeratorr¸   r,   Ú	enumvaluer   r   r   r«   ý  s    z&VGenericEngine._generate_gen_enum_declc                sL   ˆj r0‡ ‡‡fdd„ˆjD ƒ}t|ƒˆ_dˆ_nˆj||ƒ}ˆjˆ |ƒ d S )Nc                s   g | ]}ˆj d ˆ|ˆ ƒ‘qS )T)rt   )r@   rÌ   )r6   r   rB   r   r   rC     s   z4VGenericEngine._loading_gen_enum.<locals>.<listcomp>T)r¡   rÊ   ry   rË   Zpartial_resolvedrÈ   r¼   )r   rB   rP   r6   r-   rË   r¸   r   )r6   r   rB   r   r­     s    

z VGenericEngine._loading_gen_enumc             C   s<   x6t |j|jƒD ]$\}}t|||ƒ t|ƒjj|ƒ qW d S )N)ri   rÊ   rË   r}   rY   r0   rh   )r   rB   rP   r6   r7   rÌ   rÍ   r   r   r   r¯     s    zVGenericEngine._loaded_gen_enumc             C   s&   |dkrd }n|}| j d||d� d S )Nz...T)r·   )rc   )r   rB   rP   r·   r   r   r   Ú_generate_gen_macro_decl   s    z'VGenericEngine._generate_gen_macro_declc             C   sF   |dkrd }n|}| j d||||d�}t|||ƒ t|ƒjj|ƒ d S )Nz...T)r·   )rt   r}   rY   r0   rh   )r   rB   rP   r6   r7   r·   r¾   r   r   r   Ú_loaded_gen_macro)  s    z VGenericEngine._loaded_gen_macroc             C   s–   t |tjƒrv|jƒ rZ| j}d|f }| jj|ƒ |d| ƒ |dƒ |d|f ƒ |dƒ tj|jƒ}| j	d||ƒ ntj|ƒ}| j	d||dd� d S )	Nz_cffi_sizeof_%szsize_t %s(void)r]   z  return sizeof(%s);r^   Fr²   )r¶   )
r_   r   r—   Úlength_is_unknownr"   r	   rh   rv   Úitemrc   )r   rB   rP   r,   r¸   Útp_ptrr   r   r   Ú_generate_gen_variable_decl6  s    

z*VGenericEngine._generate_gen_variable_declc                s\  t |tjƒrè|jƒ rˆd|f }| jjdƒd }|j||ƒ}|ƒ }| jj|jƒ}	t	|| jj
|	ƒƒ\}
}|dkr~td||jf ƒ‚|j|
ƒ}tj|jƒ}| jd|||ƒ}|jd k	rÈ| jj|ƒ}| jj||ƒ}t|||ƒ t|ƒjj|ƒ d S d| }| jj|jd|ƒƒd }|j||ƒ}|ƒ ‰ ‡ fdd	„}‡ fd
d„}tt|ƒ|t||ƒƒ t|ƒjj|ƒ d S )Nz_cffi_sizeof_%szsize_t(*)(void)r   z/bad size: %r does not seem to be an array of %sFz_cffi_var_%sz
*(*)(void)c                s   ˆ d S )Nr   r   )r7   )Úptrr   r   Úgetterg  s    z3VGenericEngine._loaded_gen_variable.<locals>.getterc                s   |ˆ d< d S )Nr   r   )r7   r¾   )rÔ   r   r   Úsetteri  s    z3VGenericEngine._loaded_gen_variable.<locals>.setter)r_   r   r—   rÐ   r   r    r{   rz   rÑ   Údivmodr©   r   Zresolve_lengthrv   rt   r˜   Úcastr}   rY   r0   rh   rX   Úproperty)r   rB   rP   r6   r7   r¸   r   r¢   ÚsizeZ	BItemTyper˜   ÚrestrÒ   r¾   ZBArrayrÕ   rÖ   r   )rÔ   r   Ú_loaded_gen_variableH  s:    


z#VGenericEngine._loaded_gen_variable)r   )r   )Nr±   N)N)rÉ   )rÉ   )5r3   r4   r5   Z
_class_keyZ_gen_python_moduler   r   r   r   r"   r/   r:   rH   r)   r;   rU   rV   Z_generate_gen_typedef_declZ_loading_gen_typedefZ_loaded_gen_typedefrq   Z_loading_gen_functionr€   r|   rˆ   rŠ   rŒ   rŽ   r�   r�   r‡   r‰   r‹   r¬   r®   r°   rc   rº   Z_loading_gen_constantrt   rÁ   r´   r¼   rÈ   r«   r­   r¯   rÎ   Z_loading_gen_macrorÏ   rÓ   Z_loading_gen_variablerÜ   r   r   r   r   r      sf   



-$1"	 
$
	


r   ad  
#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
)
r   r   r<   r   r   rÅ   r   Úobjectr   r'   r   r   r   r   Ú<module>   s        