o
    =j%U  ã                   @   sÖ  d dl Z d dlZddlmZ ddlmZmZmZ dZdZ	dZ
dd„ ZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZeƒ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZeeƒZdd „ ZeeƒZG d!d"„ d"eƒZG d#d$„ d$eƒZeed%ƒdƒZG d&d'„ d'eƒZG d(d)„ d)eƒZ G d*d+„ d+e ƒZ!G d,d-„ d-e ƒZ"G d.d/„ d/eƒZ#d<d0d1„Z$d<d2d3„Z%eƒ Z&e '¡ Z(d4d5„ Z)d6d7„ Z*d8d9„ Z+d:d;„ Z,dS )=é    Né   )Úallocate_lock)Ú	CDefErrorÚVerificationErrorÚVerificationMissingé   é   c                 C   s@   | t @ r
d| ¡  }| t@ rd| ¡  }| t@ rd| ¡  }|S )Nz const z
 volatile z __restrict )ÚQ_CONSTÚlstripÚ
Q_VOLATILEÚ
Q_RESTRICT)ÚqualsÚreplace_with© r   úTC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\cffi/model.pyÚqualify   s   r   c                   @   sP   e Zd ZdZdZddd„Zdd„ Zd	d
„ Zdd„ Zddd„Z	dd„ Z
dd„ ZdS )ÚBaseTypeByIdentityFÚ úa C filer   c                 C   sŠ   | j }| d¡dksJ ‚| ¡ }|r*| d¡r d|v r d| }n
|d dvr*d| }t||ƒ}| d|¡}d	|v rCtd
|  ¡ |f ƒ‚|S )Nú&r   Ú*z&[ú(%s)r   z[(ú ú$z-cannot generate '%s' in %s: unknown type name)Úc_name_with_markerÚcountÚstripÚ
startswithr   Úreplacer   Ú_get_c_name)Úselfr   Úcontextr   Úresultr   r   r   Ú
get_c_name   s"   


ÿÿzBaseTypeByIdentity.get_c_namec                 C   s   | j  dd¡S )Nr   r   )r   r   ©r    r   r   r   r   /   ó   zBaseTypeByIdentity._get_c_namec                 C   s   d|   ¡ vS )Nr   ©r   r$   r   r   r   Ú
has_c_name2   ó   zBaseTypeByIdentity.has_c_namec                 C   ó   dS ©NFr   r$   r   r   r   Úis_integer_type5   ó   z"BaseTypeByIdentity.is_integer_typec                 C   sL   z|j |  }W |S  ty%   |  ||¡}|j  | |¡}||u s"J ‚Y |S w ©N)Ú_cached_btypesÚKeyErrorÚbuild_backend_typeÚ
setdefault)r    ÚffiÚ
finishlistÚ	can_delayÚBTypeZBType2r   r   r   Úget_cached_btype8   s   üüz#BaseTypeByIdentity.get_cached_btypec                 C   s   d|   ¡ f S )Nz<%s>r&   r$   r   r   r   Ú__repr__A   r%   zBaseTypeByIdentity.__repr__c                    s   ‡ fdd„ˆ j D ƒS )Nc                    s   g | ]	}|t ˆ |ƒf‘qS r   )Úgetattr)Ú.0Únamer$   r   r   Ú
<listcomp>E   s    z1BaseTypeByIdentity._get_items.<locals>.<listcomp>)Ú_attrs_r$   r   r$   r   Ú
_get_itemsD   s   zBaseTypeByIdentity._get_itemsN)r   r   r   ©F)Ú__name__Ú
__module__Ú__qualname__Úis_array_typeÚis_raw_functionr#   r   r'   r+   r6   r7   r=   r   r   r   r   r      s    

	r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚBaseTypec                 C   s   | j |j ko|  ¡ | ¡ kS r-   )Ú	__class__r=   ©r    Úotherr   r   r   Ú__eq__J   s   ÿzBaseType.__eq__c                 C   s
   | |k S r-   r   rF   r   r   r   Ú__ne__N   ó   
zBaseType.__ne__c                 C   s   t | jt|  ¡ ƒfƒS r-   )ÚhashrE   Útupler=   r$   r   r   r   Ú__hash__Q   ó   zBaseType.__hash__N)r?   r@   rA   rH   rI   rM   r   r   r   r   rD   H   s    rD   c                   @   ó    e Zd ZdZdd„ Zdd„ ZdS )ÚVoidTyper   c                 C   s
   d| _ d S )Nzvoid&)r   r$   r   r   r   Ú__init__X   rJ   zVoidType.__init__c                 C   s   t | |dƒS )NZnew_void_type©Úglobal_cache©r    r2   r3   r   r   r   r0   [   r(   zVoidType.build_backend_typeN©r?   r@   rA   r<   rQ   r0   r   r   r   r   rP   U   s    rP   c                   @   s   e Zd Zdd„ ZdS )ÚBasePrimitiveTypec                 C   r)   r*   r   r$   r   r   r   Úis_complex_typeb   r,   z!BasePrimitiveType.is_complex_typeN)r?   r@   rA   rW   r   r   r   r   rV   a   s    rV   c                   @   s~  e Zd ZdZi dd“dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“i dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d“d"d“d#d“d$d“d%d“d&d“d'd“¥i d(d“d)d“d*d“d+d“d,d“d-d“d.d“d/d“d0d“d1d“d2d“d3d“d4d“d5d“d6d“d7d“d8d“¥Zd9d:„ Zd;d<„ Zd=d>„ Zd?d@„ ZdAdB„ Z	dCdD„ Z
dES )FÚPrimitiveType©r:   ÚcharÚcÚshortÚiÚintÚlongz	long longzsigned charzunsigned charzunsigned shortúunsigned intúunsigned longzunsigned long longÚfloatÚfÚdoublezlong doubleZ_cffi_float_complex_tÚjZ_cffi_double_complex_tZ_BoolZwchar_tZchar16_tZchar32_tZint8_tZuint8_tZint16_tZuint16_tZint32_tZuint32_tZint64_tZuint64_tZint_least8_tZuint_least8_tZint_least16_tZuint_least16_tZint_least32_tZuint_least32_tZint_least64_tZuint_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_tZintptr_tZ	uintptr_tZintmax_tZ	uintmax_tZ	ptrdiff_tZsize_tZssize_tc                 C   s"   || j v sJ ‚|| _|d | _d S ©Nr   )ÚALL_PRIMITIVE_TYPESr:   r   ©r    r:   r   r   r   rQ       ó   zPrimitiveType.__init__c                 C   ó   | j | j dkS )Nr[   ©rg   r:   r$   r   r   r   Úis_char_type¥   ó   zPrimitiveType.is_char_typec                 C   rj   )Nr]   rk   r$   r   r   r   r+   §   rm   zPrimitiveType.is_integer_typec                 C   rj   )Nrc   rk   r$   r   r   r   Úis_float_type©   rm   zPrimitiveType.is_float_typec                 C   rj   )Nre   rk   r$   r   r   r   rW   «   rm   zPrimitiveType.is_complex_typec                 C   s   t | |d| jƒS )NZnew_primitive_type)rS   r:   rT   r   r   r   r0   ®   rm   z PrimitiveType.build_backend_typeN)r?   r@   rA   r<   rg   rQ   rl   r+   rn   rW   r0   r   r   r   r   rX   f   sÞ    ÿþýüûúùø	÷
öõôóòñðïíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ì7rX   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚUnknownIntegerTyperY   c                 C   ó   || _ |d | _d S rf   ©r:   r   rh   r   r   r   rQ   µ   ó   zUnknownIntegerType.__init__c                 C   r)   )NTr   r$   r   r   r   r+   ¹   r,   z"UnknownIntegerType.is_integer_typec                 C   ó   t d| j ƒ‚)Nz4integer type '%s' can only be used after compilation©ÚNotImplementedErrorr:   rT   r   r   r   r0   ¼   ó   ÿz%UnknownIntegerType.build_backend_typeN)r?   r@   rA   r<   rQ   r+   r0   r   r   r   r   ro   ²   s
    ro   c                   @   rO   )ÚUnknownFloatTyperY   c                 C   rp   rf   rq   rh   r   r   r   rQ   Ã   rr   zUnknownFloatType.__init__c                 C   rs   )Nz2float type '%s' can only be used after compilationrt   rT   r   r   r   r0   Ç   rv   z#UnknownFloatType.build_backend_typeNrU   r   r   r   r   rw   À   s    rw   c                   @   s   e Zd ZdZddd„ZdS )ÚBaseFunctionType)Úargsr"   ÚellipsisÚabiNc                 C   s’   || _ || _|| _|| _dd„ | j D ƒ}| jr| d¡ |p dg}| jd |¡f }|d ur>|d d… | d |dd …  }| jj d|¡| _d S )	Nc                 S   s   g | ]}|  ¡ ‘qS r   r&   )r9   Úargr   r   r   r;   Õ   s    z-BaseFunctionType.__init__.<locals>.<listcomp>ú...Zvoidz, r   r   r   )	ry   r"   rz   r{   ÚappendÚ_base_patternÚjoinr   r   )r    ry   r"   rz   r{   Zreprargsr   r   r   r   rQ   Ï   s   

 ÿzBaseFunctionType.__init__r-   ©r?   r@   rA   r<   rQ   r   r   r   r   rx   Ì   ó    rx   c                   @   s$   e Zd ZdZdZdd„ Zdd„ ZdS )ÚRawFunctionTypez(&)(%s)Tc                 C   s   t d| f ƒ‚)NzPcannot render the type %r: it is a function type, not a pointer-to-function type)r   rT   r   r   r   r0   ç   rv   z"RawFunctionType.build_backend_typec                 C   ó   t | j| j| j| jƒS r-   )ÚFunctionPtrTypery   r"   rz   r{   r$   r   r   r   Úas_function_pointerë   rN   z#RawFunctionType.as_function_pointerN)r?   r@   rA   r   rC   r0   r†   r   r   r   r   rƒ   à   s
    rƒ   c                   @   rO   )r…   z(*&)(%s)c                 C   s†   | j  ||¡}g }| jD ]}| | ||¡¡ qd}| jdkr3| js3z|jjf}W n	 ty2   Y nw t	| |dt
|ƒ|| jg|¢R Ž S )Nr   Z	__stdcallZnew_function_type)r"   r6   ry   r~   r{   rz   Ú_backendZFFI_STDCALLÚAttributeErrorrS   rL   )r    r2   r3   r"   ry   ÚtpZabi_argsr   r   r   r0   ò   s"   

ÿÿÿz"FunctionPtrType.build_backend_typec                 C   r„   r-   )rƒ   ry   r"   rz   r{   r$   r   r   r   Úas_raw_function  rN   zFunctionPtrType.as_raw_functionN)r?   r@   rA   r   r0   rŠ   r   r   r   r   r…   ï   s    r…   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )	ÚPointerType)Útotyper   r   c                 C   sB   || _ || _d}|jrd| ¡ f }t||ƒ}|j d|¡| _d S )Nz *&r   r   )rŒ   r   rB   r
   r   r   r   )r    rŒ   r   Úextrar   r   r   rQ     s   
zPointerType.__init__c                 C   s    | j j||dd�}t| |d|ƒS )NT)r4   Únew_pointer_type)rŒ   r6   rS   )r    r2   r3   ZBItemr   r   r   r0     s   zPointerType.build_backend_typeN©r   rU   r   r   r   r   r‹     s    
	r‹   c                 C   s
   t | tƒS r-   )r‹   r	   )rŒ   r   r   r   ÚConstPointerType  rJ   r�   c                   @   s   e Zd ZdZddd„ZdS )ÚNamedPointerType)rŒ   r:   r   c                 C   s"   t  | ||¡ || _|d | _d S rf   )r‹   rQ   r:   r   )r    rŒ   r:   r   r   r   r   rQ      ri   zNamedPointerType.__init__Nr�   r�   r   r   r   r   r‘     r‚   r‘   c                   @   s4   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú	ArrayType)ÚitemÚlengthTc                 C   sF   || _ || _|d u rd}n|dkrd}nd| }| j j d|¡| _d S )Nz&[]r}   z
&[/*...*/]z&[%s]r   )r“   r”   r   r   )r    r“   r”   Zbracketsr   r   r   rQ   *  s   ÿzArrayType.__init__c                 C   s   t | jtƒS r-   )Ú
isinstancer”   Ústrr$   r   r   r   Úlength_is_unknown7  r(   zArrayType.length_is_unknownc                 C   s   t | j|ƒS r-   )r’   r“   )r    Z	newlengthr   r   r   Úresolve_length:  r(   zArrayType.resolve_lengthc                 C   sH   |   ¡ rtd| f ƒ‚| j ||¡ t| jƒ ||¡}t| |d|| jƒS )Nz)cannot render the type %r: unknown lengthZnew_array_type)r—   r   r“   r6   r‹   rS   r”   )r    r2   r3   ZBPtrItemr   r   r   r0   =  s   ÿzArrayType.build_backend_typeN)	r?   r@   rA   r<   rB   rQ   r—   r˜   r0   r   r   r   r   r’   &  s    r’   rZ   c                   @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ ZdS )	ÚStructOrUnionOrEnumrY   Nc                 C   s$   | j p
d| j| jf }|d | _d S )Nz%s %sr   )Ú	forcenameÚkindr:   r   rh   r   r   r   Úbuild_c_name_with_markerL  s   z,StructOrUnionOrEnum.build_c_name_with_markerc                 C   s   || _ |  ¡  d S r-   )rš   rœ   )r    rš   r   r   r   Úforce_the_nameP  s   z"StructOrUnionOrEnum.force_the_namec                 C   s   | j  d¡sJ ‚| j d d… S )Nr   éÿÿÿÿ)r   Úendswithr$   r   r   r   Úget_official_nameT  s   z%StructOrUnionOrEnum.get_official_name)r?   r@   rA   r<   rš   rœ   r�   r    r   r   r   r   r™   H  s    r™   c                   @   sj   e Zd ZdZdZdZdZddd„Zdd„ Zdd	d
„Z	dd„ Z
ddd„Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚStructOrUnionNr   Fc                 C   s*   || _ || _|| _|| _|| _|  ¡  d S r-   )r:   ÚfldnamesÚfldtypesÚ
fldbitsizeÚfldqualsrœ   )r    r:   r¢   r£   r¤   r¥   r   r   r   rQ   _  s   zStructOrUnion.__init__c                 c   sD   � | j d urt| j| j ƒD ]\}}|dkrt|tƒr|V  qd S d S )Nr   )r£   Úzipr¢   r•   r¡   )r    r:   Útyper   r   r   Úanonymous_struct_fieldsg  s   €
€ýz%StructOrUnion.anonymous_struct_fieldsTc                 c   s|   � | j }|d u rdt| jƒ }t| j| j| j|ƒD ]"\}}}}|dkr4t|tƒr4|r4| ¡ D ]}|V  q.||||fV  qd S )Nr�   r   )	r¥   Úlenr¢   r¦   r£   r¤   r•   r¡   Ú
enumfields)r    Zexpand_anonymous_struct_unionr¥   r:   r§   Úbitsizer   r"   r   r   r   rª   m  s   €
ÿÿ€øzStructOrUnion.enumfieldsc           	      C   sz   g }g }g }g }|   ¡ D ]\}}}}| |¡ | |¡ | |¡ | |¡ qt|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _d S r-   )rª   r~   rL   r¢   r£   r¤   r¥   )	r    ÚnamesÚtypesZbitsizesr¥   r:   r§   r«   r   r   r   r   Úforce_flatten{  s   





zStructOrUnion.force_flattenc                 C   s$   t  | |||¡}|s|  ||¡ |S r-   )r™   r6   Úfinish_backend_type)r    r2   r3   r4   r5   r   r   r   r6   �  s   
ÿzStructOrUnion.get_cached_btypec                    s  | j r| j dkrtd| jf ƒ‚d S ˆ j|  }d| _ | jd u r nè| jd u r[‡ ‡fdd„| jD ƒ}tt| j|| j	ƒƒ}d}| j
rL| j
dkrGd}nd| j
f}ˆ jj||| d	d	g|¢R Ž  n­g }| j\}}}	}
tt| jƒƒD ]‡}|| }| j| }t|tƒr¼| ¡ r¼|j ˆ ˆ¡}t|ˆ  |¡ƒ\}}|dkr£|  d
| j| j| pŸdf ¡ | |¡}| jd |… |f | j|d d …  | _| ˆ ˆ¡}t|tƒrÓ|jd u rÓ|dksÒJ ‚nˆ  |¡}||krí|  d| j| j| pçd||f ¡ | |¡ qktt| j|| j	|ƒƒ}ˆ j ||| |	|
¡ d| _ d S )Nr   z(recursive structure declaration for '%s'r   c                    s   g | ]}|  ˆ ˆ¡‘qS r   )r6   )r9   r‰   ©r2   r3   r   r   r;   ¢  s    ÿz5StructOrUnion.finish_backend_type.<locals>.<listcomp>r   )é   r   rž   zfield '%s.%s' has a bogus size?z{}z=field '%s.%s' is declared as %d bytes, but is really %d bytes)Ú	completedru   r:   r.   r£   ÚfixedlayoutÚlistr¦   r¢   r¤   Úpackedr‡   Zcomplete_struct_or_unionÚranger©   r•   r’   r—   r“   r6   ÚdivmodÚsizeofÚ_verification_errorr˜   r”   r~   )r    r2   r3   r5   r£   ÚlstÚextra_flagsZfieldofsZ	fieldsizeZ	totalsizeZtotalalignmentr]   ÚfsizeZftypeZ	BItemTypeÚnlenZnrestZ
BFieldTypeZ	bitemsizer   r°   r   r¯   ”  s|   
ÿ


ÿ

ÿ
ÿ
ÿÿ
ÿ
þÿÿÿ
z!StructOrUnion.finish_backend_typec                 C   s   t |ƒ‚r-   )r   )r    Úmsgr   r   r   r¹   Ó  s   z!StructOrUnion._verification_errorc                 C   s$   | j r| jd u rt|  ¡ ƒ‚d S d S r-   )Úpartialr³   r   r   r$   r   r   r   Úcheck_not_partialÖ  s   ÿzStructOrUnion.check_not_partialc                 C   s.   |   ¡  | | ¡ t| |d| j |  ¡ | d�S )Nznew_%s_type©Úkey)rÀ   r~   rS   r›   r    rT   r   r   r   r0   Ú  s
   
ÿz StructOrUnion.build_backend_typer-   )Tr>   )r?   r@   rA   r³   r²   r¿   rµ   rQ   r¨   rª   r®   r6   r¯   r¹   rÀ   r0   r   r   r   r   r¡   Y  s    


?r¡   c                   @   ó   e Zd ZdZdS )Ú
StructTypeÚstructN©r?   r@   rA   r›   r   r   r   r   rÄ   â  ó    rÄ   c                   @   rÃ   )Ú	UnionTypeÚunionNrÆ   r   r   r   r   rÈ   æ  rÇ   rÈ   c                   @   sB   e Zd ZdZdZdZddd„Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dS )ÚEnumTypeÚenumFNc                 C   s$   || _ || _|| _|| _|  ¡  d S r-   )r:   ÚenumeratorsÚ
enumvaluesÚbaseinttyperœ   )r    r:   rÌ   rÍ   rÎ   r   r   r   rQ   ï  s
   zEnumType.__init__c                 C   s8   t  | |¡ | jd u r|  ¡ }d| dd¡ | _d S d S )Nr   r   Ú_)r™   r�   rš   r    r   )r    rš   r:   r   r   r   r�   ö  s
   
þzEnumType.force_the_namec                 C   s    | j r| jst|  ¡ ƒ‚d S d S r-   )r¿   Úpartial_resolvedr   r   r$   r   r   r   rÀ   ü  s   ÿzEnumType.check_not_partialc              
   C   s4   |   ¡  |  ||¡}t| |d|  ¡ | j| j|| d�S )NZnew_enum_typerÁ   )rÀ   Úbuild_baseinttyperS   r    rÌ   rÍ   )r    r2   r3   Z
base_btyper   r   r   r0      s   ýzEnumType.build_backend_typec                 C   s<  | j d ur| j  ||¡S | jrt| jƒ}t| jƒ}n!dd l}zt ¡  W n	 ty-   Y nw | 	d|  
¡  ¡ d }}|dk rJd}tdƒ}tdƒ}n
d}tdƒ}tdƒ}| ||¡}	| ||¡}
| |	¡}| |
¡}|dd	| d > kr€|dd	| | > k r€|	S |dd	| d > kr–|dd	| | > k r–|
S td
|  
¡  ƒ‚)Nr   zU%r has no values explicitly defined; guessing that it is equivalent to 'unsigned int'r   r^   r_   r`   ra   rž   r±   z=%s values don't all fit into either 'long' or 'unsigned long')rÎ   r6   rÍ   ÚminÚmaxÚwarningsÚ__warningregistry__ÚclearÚ	NameErrorÚwarnr   rX   r¸   r   )r    r2   r3   Zsmallest_valueZlargest_valuerÔ   ÚsignZ
candidate1Z
candidate2Zbtype1Zbtype2Zsize1Zsize2r   r   r   rÑ     sJ   

ÿþ


ÿÿÿzEnumType.build_baseinttyper-   )r?   r@   rA   r›   r¿   rÐ   rQ   r�   rÀ   r0   rÑ   r   r   r   r   rÊ   ê  s    
rÊ   c                 C   s2   |d u rd|  }t |d d d ƒ}| | ¡ d|_|S )Nz$%sÚunknown_type)rÄ   r�   Úorigin©r:   Z
structnamer‰   r   r   r   rÚ   1  s   
rÚ   c                 C   s(   |d u rd|  }t |d d d ƒ}t|| ƒS )Nz$$%s)rÄ   r‘   rÜ   r   r   r   Úunknown_ptr_type9  s   
rÝ   c                 C   s^   t | tjƒrtS t� tt| ƒdƒst ¡ t| ƒ_	t| ƒj	W  d   ƒ S 1 s(w   Y  d S )NÚ__typecache)
r•   r­   Ú
ModuleTypeÚ_typecache_cffi_backendÚglobal_lockÚhasattrr§   ÚweakrefÚWeakValueDictionaryrÞ   )Úbackendr   r   r   Úget_typecacheC  s   $ýræ   c           
   
   O   sÖ   |  d||f¡}|rJ ‚z|j| W S  ty   Y nw z
t|j|ƒ|Ž }W n ty; } z	td|| |f ƒ‚d }~ww |j}t�  | |¡}	|	d u rX|||< |W  d   ƒ S |	W  d   ƒ S 1 sdw   Y  d S )NrÂ   z
%s: %r: %s)ÚpopZ
_typecacher/   r8   r‡   ru   rá   Úget)
Zsrctyper2   Úfuncnamery   ÚkwdsrÂ   ÚresÚeÚcacheZres1r   r   r   rS   N  s,   ÿ€ÿ
ü$úrS   c                 C   s   t d| d|ƒS )Nú?rŽ   rR   )r2   r5   r   r   r   Úpointer_cachee  r%   rï   c                 C   sH   | j r t| j d ƒtu r"d|| j d f f| j dd …  | _ d S d S d S )Nr   z%s: %sr   )ry   r§   r–   )rì   r:   r   r   r   Úattach_exception_infoh  s   (ÿrð   r-   )-r­   rã   Úlockr   Úerrorr   r   r   r	   r   r   r   Úobjectr   rD   rP   Z	void_typerV   rX   ro   rw   rx   rƒ   r…   r‹   Z
voidp_typer�   Zconst_voidp_typer‘   r’   Zchar_array_typer™   r¡   rÄ   rÈ   rÊ   rÚ   rÝ   rá   rä   rà   ræ   rS   rï   rð   r   r   r   r   Ú<module>   sP    /	L	 

G
