Ë
    éÿæi;i  ã                   óN   — 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e«      ZdZ	y)é    Né   )Úmodel©ÚVerificationErrorc                   ó6  — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd-d„Z	d„ Z
d.d	„Zd
„ Zd„ Zd„ Zd„ Zd„ ZeZeZeZd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#	 	 d/d„Z$d „ Z%eZ&d0d!„Z'd"„ Z(d#„ Z)d$„ Z*d%„ Z+d1d&„Z,d1d'„Z-d(„ Z.d)„ Z/eZ0d*„ Z1d+„ Z2eZ3d,„ Z4y)2ÚVGenericEngineÚgFc                 óP   — || _         |j                  | _        g | _        i | _        y ©N)ÚverifierÚffiÚexport_symbolsÚ_struct_pending_verification)Úselfr   s     úe/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/cffi/vengine_gen.pyÚ__init__zVGenericEngine.__init__   s$   € Ø ˆŒØ—<‘<ˆŒØ ˆÔØ,.ˆÕ)ó    c                 ó<   — |j                  d| j                  «       y )Nr   )Ú
setdefaultr   )r   Úkwdss     r   Úpatch_extension_kwdsz#VGenericEngine.patch_extension_kwds   s   € ð 	�‰Ð(¨$×*=Ñ*=Õ>r   c                 óØ   — |D ]e  }||z   }|€t         j                  }|D ]G  }t        j                  j                  ||«      }t        j                  j	                  |«      sŒC|c c S  Œg y r   )ÚsysÚpathÚosÚjoinÚisfile)r   Úmodule_namer   Úso_suffixesÚ	so_suffixÚbasenameÚdirnameÚfilenames           r   Úfind_modulezVGenericEngine.find_module   sW   € Û$ˆIØ" YÑ.ˆHØˆ|Ü—x‘x�Û�ÜŸ7™7Ÿ<™<¨°Ó:�Ü—7‘7—>‘> (Õ+Ø#”Oñ  ñ	 %r   c                  ó   — y r   © )r   s    r   Úcollect_typeszVGenericEngine.collect_types%   ó   € Ør   c                 ó@   — | j                   j                  |dz   «       y )NÚ
)Ú_fÚwrite)r   Úwhats     r   Ú_prntzVGenericEngine._prnt(   s   € Ø�‰�‰�d˜T‘kÕ"r   c                 ó6  — | j                   } |t        «        || j                  j                  «       | j	                  d«       t
        j                  dk(  rAt
        j                  dk\  rd}nd}| j                  j                  «       } |d|›|›d�«       y y )NÚdeclÚwin32©é   ÚPyInit_Úinitzvoid z(void) { }
)	r.   Úcffimod_headerr   ÚpreambleÚ	_generater   ÚplatformÚversion_infoÚget_module_name)r   ÚprntÚprefixÚmodnames       r   Úwrite_source_to_fz VGenericEngine.write_source_to_f+   s}   € Ø�z‰zˆáŒ^ÔáˆT�]‰]×#Ñ#Ô$ð 	�‰�vÔô
 �<‰<˜7Ò"Ü×Ñ 4Ò'Ø"‘à�Ø—m‘m×3Ñ3Ó5ˆGÚ©F²GÐ<Õ=ð #r   c                 óv  ‡ ‡‡— ‰ j                   j                  }t        j                  j	                  t        j
                  ‰ j                  j                  «      }|j                  ||«      Š‰ j                  ‰d«        G ˆˆˆ fd„dt        j                  «      Š ‰d«      }‰ j                  ‰d|¬«       |S )NÚloadingc                   ó<   •— e Zd ZW °ZW °j                  Zg Zˆ fd„Zy)ú/VGenericEngine.load_library.<locals>.FFILibraryc                 ó   •— ‰j                   S r   )Ú	_cffi_dir)r   Ú
FFILibrarys    €r   Ú__dir__z7VGenericEngine.load_library.<locals>.FFILibrary.__dir__T   s   ø€ Ø!×+Ñ+Ð+r   N)Ú__name__Ú
__module__Ú__qualname__Ú_cffi_generic_moduler   Ú	_cffi_ffirE   rG   )rF   Úmoduler   s   €€€r   rF   rC   P   s   ø„ Ù#)Ð ÙŸ™ˆIØˆIõ,r   rF   Ú Úloaded)Úlibrary)r   Ú_backendr   r   r   Úcurdirr   ÚmodulefilenameÚload_libraryÚ_loadÚtypesÚ
ModuleType)r   ÚflagsÚbackendr#   rP   rF   rM   s   `    @@r   rT   zVGenericEngine.load_libraryA   s‘   ú€ à—(‘(×#Ñ#ˆä—7‘7—<‘<¤§	¡	¨4¯=©=×+GÑ+GÓHˆØ×%Ñ% h°Ó6ˆð 	�
‰
�6˜9Ô%÷	,ð 	,œ×)Ñ)ô 	,ñ ˜R“.ˆð 	�
‰
�6˜8¨Wˆ
Ô5Øˆr   c                 óÂ   — | j                   j                  j                  j                  «       D ���cg c]  \  }\  }}||f‘Œ }}}}|j	                  «        |S c c}}}w r   )r   Ú_parserÚ_declarationsÚitemsÚsort)r   ÚkeyÚtpÚqualÚlsts        r   Ú_get_declarationsz VGenericEngine._get_declarations]   s]   € à $§¡× 0Ñ 0× >Ñ >× DÑ DÔ FõHÙ Fñ /˜c¡: B¨��RŠyØ Fð 	ò Hà�‰Œ
Øˆ
ùôHs   ³Ac                 ó  — | j                  «       D ]7  \  }}|j                  dd«      \  }}	 t        | d|›d|›�«      }	  |||«       Œ9 y # t        $ r t	        d|z  «      ‚w xY w# t
        $ r}t        j                  ||«       ‚ d }~ww xY w)NÚ r   Ú_generate_gen_Ú_znot implemented in verify(): %r)rc   ÚsplitÚgetattrÚAttributeErrorr   Ú	Exceptionr   Úattach_exception_info)r   Ú	step_nameÚnamer`   ÚkindÚrealnameÚmethodÚes           r   r8   zVGenericEngine._generatec   s£   € Ø×.Ñ.Ö0‰HˆD�"Ø!ŸZ™Z¨¨QÓ/‰NˆD�(ð>Ü ¡ÂÙ@Ið(Kó L�ð
Ù�r˜8Õ$ñ 1øô
 "ò >Ü'Ø5¸Ñ<ó>ð >ð>ûô
 ò Ü×+Ñ+¨A¨tÔ4Øûðús#   ­AÁ 	A'ÁA$Á'	BÁ0BÂBc                 óê   — | j                  «       D ]8  \  }}|j                  dd«      \  }}t        | d|›d|›�«      }	  ||||fi |¤Ž Œ: y # t        $ r}	t	        j
                  |	|«       ‚ d }	~	ww xY w)Nre   r   rg   Ú_gen_)rc   rh   ri   rk   r   rl   )
r   rM   rm   r   rn   r`   ro   rp   rq   rr   s
             r   rU   zVGenericEngine._loadr   sy   € Ø×.Ñ.Ö0‰HˆD�"Ø!ŸZ™Z¨¨QÓ/‰NˆD�(Ü™T²9¹dÐ#CÓDˆFðÙ�r˜8 VÑ4¨tÓ4ñ	 1øô
 ò Ü×+Ñ+¨A¨tÔ4Øûðús   ¿AÁ	A2ÁA-Á-A2c                  ó   — y r   r&   ©r   r`   rn   s      r   Ú_generate_nothingz VGenericEngine._generate_nothing|   r(   r   c                  ó   — y r   r&   ©r   r`   rn   rM   r   s        r   Ú_loaded_noopzVGenericEngine._loaded_noop   r(   r   c           	      ó¤  — t        |t        j                  «      sJ ‚|j                  r| j	                  d||«       y | j
                  }t        |j                  «      }g }t        |j                  «      D ]9  \  }}d}t        |t        j                  «      rd}|j                  d||fz  «       Œ; d|z  }	t        |j                  |«      D ��
cg c]  \  }}
|j                  d|
z  |	«      ‘Œ }}}
|j                  }t        |t        j                  «      r2|j                  d|j                  d|	«      «       t        j                  }d	j!                  |«      xs d
}d|z  }| j"                  j                  |«       |j$                  r|j$                  dz   }nd}d|›|›d|›d�}d|z  }	 ||j                  ||	«      «        |d«       t        |j                  t        j                  «      rd}n)t        |j                  t        j&                  «      sd}nd} |d|›|›dd	j!                  |«      ›d�«        |d«        |«        y c c}
}w )NFrN   Ú*z%sx%dzargument of %sz %sr   z *rú, Úvoidú
_cffi_f_%sre   Ú(Ú)zresult of %sÚ{z*r = zreturn ú  ú);Ú})Ú
isinstancer   ÚFunctionPtrTypeÚellipsisÚ_generate_gen_constr.   ÚlenÚargsÚ	enumerateÚStructOrUnionÚappendÚzipÚ
get_c_nameÚresultÚinsertÚ	void_typer   r   ÚabiÚVoidType)r   r`   rn   r<   ÚnumargsÚargnamesÚiÚtypeÚindirectionÚcontextÚargÚarglistÚtpresultÚwrappernamer”   ÚfuncdeclÚresult_codes                    r   Ú_generate_gen_function_declz*VGenericEngine._generate_gen_function_declŒ   sú  € Ü˜"œe×3Ñ3Ô4Ð4Ð4Ø�;Š;ð ×$Ñ$ U¨D°"Ô5ØØ�z‰zˆÜ�b—g‘g“,ˆØˆÜ  §¡Ö)‰GˆAˆtØˆKÜ˜$¤× 3Ñ 3Ô4Ø!�Ø�O‰O˜G {°AÐ&6Ñ6Õ7ð	 *ð
 # TÑ)ˆä$'¨¯©°Ô$:ô<Ù$:‘y�t˜Sð —?‘? 5¨3¡;°Õ8Ø$:ð 	ñ <à—9‘9ˆÜ�h¤× 3Ñ 3Ô4Ø�N‰N˜1˜h×1Ñ1°%¸ÓAÔBÜ—‘ˆHØ—)‘)˜GÓ$Ò.¨ˆØ" TÑ)ˆØ×Ñ×"Ñ" ;Ô/Ø�6Š6Ø—&‘&˜3‘,‰CàˆCøÙ"%¢{²GÐ<ˆØ  4Ñ'ˆÙˆX× Ñ  ¨7Ó3Ô4ÙˆSŒ	ä�b—i‘i¤×!4Ñ!4Ô5Ø!‰KÜ˜BŸI™I¤u§~¡~Ô6Ø#‰KàˆKÚ™kª4°·±¸8Õ1DÐEÔFÙˆSŒ	Ù�ùó5<s   ÃIc                 óx  — t        |t        j                  «      sJ ‚|j                  r| j	                  d|||«      }�nËg }|}t        d„ |j                  D «       «      s%t        |j                  t        j                  «      �r6g }t        |j                  «      D ]X  \  }	}
t        |
t        j                  «      r(t        j                  |
«      }
|j                  |	|
f«       |j                  |
«       ŒZ |j                  }t        |t        j                  «      rt|j                  €t        d|j                  «       ›d�«      ‚t        j                  |«      }|j                  d|«       |j                  dd|f«       t        j                   }t        j                  t#        |«      ||j                  «      }| j$                  j'                  |«      }d|z  }|j)                  ||«      }|D ]  \  }	}
| j+                  ||	|
|«      }Œ t-        |||«       t/        |«      j0                  j                  |«       y )NFc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr   )r†   r   r�   )Ú.0Útyps     r   Ú	<genexpr>z6VGenericEngine._loaded_gen_function.<locals>.<genexpr>Â   s   è ø€ ÐLÁG¸S”J˜s¤E×$7Ñ$7×8ÁGùs   ‚$&Ú'z'' is used as result type, but is opaquer   r‘   r   )r†   r   r‡   rˆ   Ú_load_constantÚanyr‹   r‘   r�   rŒ   ÚPointerTyperŽ   ÚfldtypesÚ	TypeErrorÚ_get_c_namer’   r“   Útupler   Ú_get_cached_btypeÚload_functionÚ_make_struct_wrapperÚsetattrr™   rE   )r   r`   rn   rM   rP   ÚnewfunctionÚindirectionsÚbase_tpÚindirect_argsr˜   r¦   Úindirect_resultÚBFuncrŸ   s                 r   Ú_loaded_gen_functionz#VGenericEngine._loaded_gen_function»   sè  € Ü˜"œe×3Ñ3Ô4Ð4Ð4Ø�;Š;Ø×-Ñ-¨e°R¸¸vÓFŠKàˆLØˆGÜÑLÀBÇGÂGÓLÔLÜ! "§)¡)¬U×-@Ñ-@ÕAØ "�Ü'¨¯©Ö0‘F�A�sÜ! #¤u×':Ñ':Ô;Ü#×/Ñ/°Ó4˜Ø$×+Ñ+¨Q°¨HÔ5Ø!×(Ñ(¨Õ-ð	 1ð
 #%§)¡)�Ü˜o¬u×/BÑ/BÔCØ&×/Ñ/Ð7Ý'à,;×,GÑ,GÕ,Ið)Ló Mð Mô ',×&7Ñ&7¸Ó&H�OØ!×(Ñ(¨¨OÔ<Ø ×'Ñ'¨¨H°oÐ+FÔGÜ&+§o¡o�OÜ×*Ñ*¬5°Ó+?Ø+:¸B¿K¹KóI�à—H‘H×.Ñ.¨rÓ2ˆEØ&¨Ñ-ˆKØ ×.Ñ.¨u°kÓBˆKÛ&‘��3Ø"×7Ñ7¸ÀQÈØ8?óA‘ð 'ô 	�˜˜{Ô+ÜˆW‹×Ñ×&Ñ& tÕ,r   c                 óÂ   ‡‡‡‡‡— | j                   j                  Š| j                   j                  |«      Š‰dk(  r| j                   Šˆˆˆfd„}nˆˆˆˆfd„}||_        |S )Nr‘   c                  óB   •— ‰j                  ‰«      } ‰|g| ¢­Ž  |d   S ©Nr   )Únew)r‹   ÚresÚBTyper   Úoldfuncs     €€€r   Únewfuncz4VGenericEngine._make_struct_wrapper.<locals>.newfuncä   s&   ø€ Ø—g‘g˜e“n�Ù˜Ð#˜dÓ#Ø˜1‘v�r   c                  óX   •— | d ‰ ‰j                  ‰| ‰   «      fz   | ‰dz   d  z   }  ‰| Ž S )Nr   )Únewp)r‹   rÀ   rY   r˜   rÁ   s    €€€€r   rÂ   z4VGenericEngine._make_struct_wrapper.<locals>.newfuncé   s>   ø€ Ø˜B˜Q�x 7§<¡<°°t¸A±wÓ#?Ð"AÑAÀDÈÈ1ÉÈÀJÑN�Ù �~Ð%r   )r   rQ   r°   Ú_cffi_base_type)	r   rÁ   r˜   r`   r¶   rÂ   rÀ   rY   r   s	    ``   @@@r   r²   z#VGenericEngine._make_struct_wrapperß   sO   ü€ Ø—(‘(×#Ñ#ˆØ—‘×*Ñ*¨2Ó.ˆØ�Š=Ø—(‘(ˆC÷÷
&ð #*ˆÔØˆr   c                 óL   — ||j                   k(  sJ ‚| j                  |d|«       y ©NÚstruct©rn   Ú_generate_struct_or_union_declrv   s      r   Ú_generate_gen_struct_declz(VGenericEngine._generate_gen_struct_declò   s$   € Ø�r—w‘wŠÐˆØ×+Ñ+¨B°¸$Õ?r   c                 ó,   — | j                  |d||«       y rÇ   ©Ú_loading_struct_or_union©r   r`   rn   rM   s       r   Ú_loading_gen_structz"VGenericEngine._loading_gen_structö   s   € Ø×%Ñ% b¨(°D¸&ÕAr   c                 ó&   — | j                  |«       y r   ©Ú_loaded_struct_or_unionry   s        r   Ú_loaded_gen_structz!VGenericEngine._loaded_gen_structù   ó   € Ø×$Ñ$ RÕ(r   c                 óL   — ||j                   k(  sJ ‚| j                  |d|«       y ©NÚunionrÉ   rv   s      r   Ú_generate_gen_union_declz'VGenericEngine._generate_gen_union_declü   s$   € Ø�r—w‘wŠÐˆØ×+Ñ+¨B°¸Õ>r   c                 ó,   — | j                  |d||«       y r×   rÍ   rÏ   s       r   Ú_loading_gen_unionz!VGenericEngine._loading_gen_union   s   € Ø×%Ñ% b¨'°4¸Õ@r   c                 ó&   — | j                  |«       y r   rÒ   ry   s        r   Ú_loaded_gen_unionz VGenericEngine._loaded_gen_union  rÕ   r   c           	      óD  — |j                   €y d|›d|›�}d|›d|›�}|›d|›�j                  «       }| j                  } |d|›d|›d�«        |d«        |d	«        |d
«       |j                  «       D ]g  \  }}	}
}t	        |	t
        j                  «      r|	j                  «       s|
dk\  r |d|z  «       ŒC	  |d|	j                  dd|z  |¬«      ›d|›d�«       Œi  |d«       | j                  j                  |«        |d|›d�«        |d«        |d|z  «        |d«        |d|z  «        |d«       |j                  «       D ]k  \  }}	}
}|
dk\  rŒ |d|›d|›d�«       t	        |	t
        j                  «      r&|	j                  € |d|	j                  «       z  «       Œ] |d|›d |›d�«       Œm  |d!«        |d"«        |d#«        |d$«        |d%|›d&�«        |d«        |«        y # t        $ r} |dt        |«      z  «       Y d }~�Œ¤d }~ww xY w)'NÚ_cffi_check_rg   Ú_cffi_layout_re   zstatic void r€   z *p)r‚   z8  /* only to generate compile-time warnings or errors */z
  (void)p;r   z  (void)((p->%s) << 1);z  { z*tmpzfield %r)Úqualsz = &p->z; (void)tmp; }z
  /* %s */r…   z	intptr_t z(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(r}   z),z    0,  /* %s */z    sizeof(((z *)0)->z    -1z  };z  return nums[i];z3  /* the next line is not executed, but compiled */rƒ   z(0);)ÚfldnamesÚstripr.   Ú
enumfieldsr†   r   ÚPrimitiveTypeÚis_integer_typer�   r   Ústrr   rŽ   Ú	ArrayTypeÚlengthr®   )r   r`   r=   rn   ÚcheckfuncnameÚlayoutfuncnameÚcnamer<   ÚfnameÚftypeÚfbitsizeÚfqualrr   s                r   rÊ   z-VGenericEngine._generate_struct_or_union_decl  s  € Ø�;‰;ÐØð â/5±tÐ<‰Ú17¹Ð>ˆÚ"¡DÐ)×0Ñ0Ó2ˆà�z‰zˆÚª²uÐ=Ô>ÙˆSŒ	ÙÐGÔHÙˆ\ÔØ-/¯]©]®_Ñ)ˆE�5˜( EÜ˜5¤%×"5Ñ"5Ô6Ø×)Ñ)Ô+°¸A²áÐ.°Ñ6Õ7ð0ÚØ×(Ñ(¨°¸EÑ1AÈÐ(ÕOÚðõ  ð .=ñ 	ˆSŒ	Ø×Ñ×"Ñ" >Ô2Úª.Ð:Ô;ÙˆSŒ	ÙÐ;¸eÑCÔDÙÐ+Ô,ÙÐ Ñ&Ô'ÙÐ8Ô9Ø-/¯]©]®_Ñ)ˆE�5˜( EØ˜1Š}ØÚªE²5Ð9Ô:Ü˜%¤§¡Ô1°e·l±lÐ6JÙÐ'¨%×*;Ñ*;Ó*=Ñ=Õ>â²UºEÐBÕCð .=ñ 	ˆXŒÙˆVŒÙÐ Ô!ÙÐBÔCÚš=Ð*Ô+ÙˆSŒ	Ù�øô1 )ò 0Ù˜¬¨A«Ñ.×/Ò/ûð0ús   Â:$G7Ç7	HÈ HÈHc                 óP  — |j                   €y d|›d|›�}| j                  j                  d«      d   }|j                  ||«      }g }d}		  ||	«      }
|
dk  rn|j	                  |
«       |	dz  }	Œ%t        |t        j                  «      rw|j                  rk|d   }|d   }|dd d…   }|dd d…   }|j                  «        t        |«      t        |«      cxk(  rt        |j                   «      k(  sJ ‚ J ‚||||f|_        y |›d|›�j                  «       }||f| j                  |<   y )	Nrà   rg   zintptr_t(*)(intptr_t)r   r   é   r3   re   )râ   r   Ú_typeof_lockedr±   rŽ   r†   r   r�   ÚpartialÚforce_flattenrŠ   Úfixedlayoutrã   r   )r   r`   r=   rn   rM   rë   r¹   ÚfunctionÚlayoutÚnumÚxÚ	totalsizeÚtotalalignmentÚfieldofsÚ	fieldsizerì   s                   r   rÎ   z'VGenericEngine._loading_struct_or_union7  s:  € Ø�;‰;ÐØð â17¹Ð>ˆà—‘×'Ñ'Ð(?Ó@ÀÑCˆØ×'Ñ'¨¨~Ó>ˆØˆØˆØÙ˜“ˆAØ�1Šu�eØ�M‰M˜!ÔØ�1‰HˆCð	 ô
 �bœ%×-Ñ-Ô.°2·:²:ð ˜q™	ˆIØ# A™YˆNØ˜a˜d ˜d‘|ˆHØ˜q˜t !˜t™ˆIØ×ÑÔÜ�x“=¤C¨	£NÔF´c¸"¿+¹+Ó6FÒFÐFÑFÐFÐFØ% y°)¸^ÐKˆB�Nâ &©Ð-×4Ñ4Ó6ˆEØ4:¸E°MˆD×-Ñ-¨bÒ1r   c                 óŠ  — |j                   €y | j                  j                  |«       || j                  v �rd„ }| j                  }|j                  |«      }| j                  j	                  |«      \  }} ||d   |j                  |«      d«        ||d   |j                  |«      d«       d}|j                  «       D ]p  \  }}	}
}|
dk\  rŒ |||   |j                  ||«      d|›�«       ||dz      dk7  r3|j                  |	«      } |||dz      |j                  |«      d|›�«       |dz  }Œr |t        |«      k(  sJ ‚y y )	Nc                 ó0   — | |k7  rt        d||| fz  «      ‚y )Nz'%s (we have %d, but C compiler says %d)r   )Ú	realvalueÚexpectedvalueÚmsgs      r   Úcheckz5VGenericEngine._loaded_struct_or_union.<locals>.checkZ  s.   € Ø Ò-Ü+ØAØ ¨yÐ9ñ:ó;ð ;ð .r   r   zwrong total sizer   zwrong total alignmentrò   zwrong offset for field zwrong size for field )
râ   r   r°   r   ÚpopÚsizeofÚalignofrä   ÚoffsetofrŠ   )r   r`   r  r   ÚBStructrø   rì   r˜   rí   rî   rï   rð   ÚBFields                r   rÓ   z&VGenericEngine._loaded_struct_or_unionS  sM  € Ø�;‰;ÐØØ�‰×"Ñ" 2Ô&à�×2Ñ2Ò2ò;ð
 —(‘(ˆCØ×+Ñ+¨BÓ/ˆGØ ×=Ñ=×AÑAÀ"ÓE‰MˆF�EÙ�&˜‘)˜SŸZ™Z¨Ó0Ð2DÔEÙ�&˜‘)˜SŸ[™[¨Ó1Ð3JÔKØˆAØ13·±¶Ñ-��u˜h¨Ø˜q’=ØÙ�f˜Q‘i §¡¨g°uÔ!=Ù5:Ð<ô>à˜!˜A™#‘; !Ò#Ø ×2Ñ2°5Ó9�FÙ˜&  1¡™+ s§z¡z°&Ô'9Ù7<Ð>ô@à�Q‘‘ð 2Að œ˜F›Ò#Ð#Ñ#ð/ 3r   c                 ó†   — t        |t        j                  «      r| j                  ||d«       y | j	                  |d|«       y ©NrN   )r†   r   ÚEnumTypeÚ_generate_gen_enum_declrÊ   rv   s      r   Ú_generate_gen_anonymous_declz+VGenericEngine._generate_gen_anonymous_declu  s4   € Ü�bœ%Ÿ.™.Ô)Ø×(Ñ(¨¨T°2Õ6à×/Ñ/°°B¸Õ=r   c                 óŠ   — t        |t        j                  «      r| j                  |||d«       y | j	                  |d||«       y r  )r†   r   r  Ú_loading_gen_enumrÎ   rÏ   s       r   Ú_loading_gen_anonymousz%VGenericEngine._loading_gen_anonymous{  s8   € Ü�bœ%Ÿ.™.Ô)Ø×"Ñ" 2 t¨V°RÕ8à×)Ñ)¨"¨b°$¸Õ?r   c                 ó†   — t        |t        j                  «      r | j                  |||fi |¤Ž y | j	                  |«       y r   )r†   r   r  Ú_loaded_gen_enumrÓ   ry   s        r   Ú_loaded_gen_anonymousz$VGenericEngine._loaded_gen_anonymous�  s7   € Ü�bœ%Ÿ.™.Ô)Ø!ˆD×!Ñ! " d¨FÑ;°dÓ;à×(Ñ(¨Õ,r   Nc                 óV  — | j                   }d|›d|›�}| j                  j                  |«       |�A|sJ ‚|dk(  sJ ‚ |d|z  «        |d«       | j                  ||«        |d«        |d«       n°|r;|dk(  sJ ‚ |d|z  «        |d«        |d	|›d
�«        |d|›d�«        |d«       ns|€J ‚|�J ‚|dk(  rd}nd}d}	|dk(  rt	        |t
        j                  «      rd}	d} ||j                  d|	›|›d�|«      «        |d«        |d|›|›d
�«        |d«        |«        y )NÚ_cffi_rg   Úconstúint %s(char *out_error)r‚   ú  return 0;r…   zint %s(long long *out_value)z  *out_value = (long long)(r„   z
  return (z) <= 0;ÚvarÚ&rN   zconst *re   z(void))r.   r   rŽ   Ú_check_int_constant_valuer†   r   r�   r�   )
r   Úis_intrn   r`   ÚcategoryÚcheck_valuer<   ÚfuncnameÚ	ampersandÚextras
             r   r‰   z"VGenericEngine._generate_gen_constŠ  sA  € à�z‰z‰Ú$,©dÐ3ˆØ×Ñ×"Ñ" 8Ô,ØÐ"ÙˆM�6Ø˜wÒ&Ð&Ð&ÙÐ*¨XÑ5Ô6Ù�ŒIØ×*Ñ*¨4°Ô=Ù�ÔÙ��IÙØ˜wÒ&Ð&Ð&ÙÐ/°(Ñ:Ô;Ù�ŒIÚ²dÐ<Ô=Úª$Ð0Ô1Ù��Ià�>Ð!�>ØÐ&Ð&Ð&Ø˜5Ò Ø‘	à�	ØˆEØ˜7Ò"¤z°"´e×6IÑ6IÔ'JØ!�Ø�	Ù�—’±²xÐ@À$ÓGÔHÙ�ŒIÚ¡y²$Ð7Ô8Ù�ŒIÙ�r   c                 ó‚   — t        |t        j                  «      xr |j                  «       }| j	                  |||«       y r   )r†   r   rå   ræ   r‰   )r   r`   rn   r  s       r   Ú_generate_gen_constant_declz*VGenericEngine._generate_gen_constant_decl¯  s4   € Ü˜B¤× 3Ñ 3Ó4ÒM¸×9KÑ9KÓ9MˆØ× Ñ  ¨¨rÕ2r   c                 óö  — d|z  }|�|sJ ‚| j                  ||«       |}|S |rÊ| j                  j                  d«      d   }| j                  j                  d«      d   }	|j                  |	|«      }
| j                  j	                  |«      } |
|«      }t        |d   «      }|dk  rD|sB| j                  j                  d«      d   }|dd| j                  j                  |«      z  z  z  }|S |�J ‚d}t        |t        j                  «      rd	|z   }| 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)r|   )Ú_load_known_int_constantr   ró   r±   r¾   Úintr  r†   r   r�   r�   )r   r  r`   rn   rM   r   r!  ÚvaluerÀ   r¹   r÷   ÚpÚnegativeÚ	BLongLongÚfntypeextras                  r   r©   zVGenericEngine._load_constantµ  sy  € Ø# dÑ*ˆØÐ"ÙˆM�6Ø×)Ñ)¨&°(Ô;ØˆEð* ˆñ) Ø—H‘H×+Ñ+¨LÓ9¸!Ñ<ˆEØ—H‘H×+Ñ+Ð,@ÓAÀ!ÑDˆEØ×+Ñ+¨E°8Ó<ˆHØ—‘—‘˜UÓ#ˆAÙ “{ˆHÜ˜˜!™“IˆEØ�qŠy¡Ø ŸH™H×3Ñ3°KÓ@ÀÑC�	Ø˜!  $§(¡(§/¡/°)Ó"<Ñ <Ñ=Ñ>�ð ˆð Ð&Ð&Ð&Ø%ˆKÜ˜"œe×1Ñ1Ô2Ø! KÑ/�Ø—H‘H×+Ñ+¨B¯M©M¸+ÀtÓ,LÓMÈaÑPˆEØ×+Ñ+¨E°8Ó<ˆHÙ“JˆEÜ˜"œe×1Ñ1Ô2Ø˜a™�Øˆr   c                 óæ   — t        |t        j                  «      xr |j                  «       }| j	                  ||||«      }t        |||«       t        |«      j                  j                  |«       y r   )	r†   r   rå   ræ   r©   r³   r™   rE   rŽ   )r   r`   rn   rM   rP   r  r*  s          r   Ú_loaded_gen_constantz#VGenericEngine._loaded_gen_constantÑ  s\   € Ü˜B¤× 3Ñ 3Ó4ÒM¸×9KÑ9KÓ9MˆØ×#Ñ# F¨B°°fÓ=ˆÜ�˜˜uÔ%ÜˆW‹×Ñ×&Ñ& tÕ,r   c                 ó  — | j                   }|dk  r |d|||fz  «       n |d|||fz  «        |d«        |d|z  «        |d|z  «        |d«        |d|z  «        |d	«        |d
|d d |fz  «        |d«        |d«       y )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   rn   r*  r<   s       r   r  z(VGenericEngine._check_int_constant_valueÚ  s¿   € Ø�z‰zˆØ�AŠ:ÙÐ9Ø�d˜Eð=#ñ #õ $ñ ÐDØ�d˜EðH#ñ #ô $áÐ Ô!ÙÐ! DÑ(Ô)ÙÐ8¸4Ñ?Ô@ÙˆZÔÙÐAØñô 	áÐIÔJÙÐ,°°T°c°
¸EÐ/BÑBÔCÙÐÔÙˆU�r   c                 óx  — | j                   j                  d«      d   }| j                   j                  d«      d   }|j                  ||«      }| j                   j                  |d«      } ||«      dk  rE| j                   j	                  |«      }t
        j                  dk\  rt        |d«      }t        |«      ‚y )Nzchar[]r   zint(*)(char*)é   r2   zutf-8)	r   ró   r±   r¾   Ústringr   r:   rç   r   )r   rM   r!  rÀ   r¹   r÷   r+  Úerrors           r   r(  z'VGenericEngine._load_known_int_constantí  s¡   € Ø—‘×'Ñ'¨Ó1°!Ñ4ˆØ—‘×'Ñ'¨Ó8¸Ñ;ˆØ×'Ñ'¨¨xÓ8ˆØ�H‰H�L‰L˜ Ó$ˆÙ�A‹;˜Š?Ø—H‘H—O‘O AÓ&ˆEÜ×Ñ 4Ò'Ü˜E 7Ó+�Ü# EÓ*Ð*ð	 r   c                 ó6   — |j                  dd«      }d|›d|›�S )NÚ$Ú___D_Ú_cffi_e_rg   )Úreplace)r   r=   rn   s      r   Ú_enum_funcnamezVGenericEngine._enum_funcnameø  s   € à�|‰|˜C Ó)‰Ú"(©$Ð/Ð/r   c                 óž  — |j                   r$|j                  D ]  }| j                  d|«       Œ y | j                  ||«      }| j                  j                  |«       | j                  } |d|z  «        |d«       t        |j                  |j                  «      D ]  \  }}| j                  ||«       Œ  |d«        |d«        |«        y )NTr  r‚   r  r…   )
rô   Úenumeratorsr‰   r<  r   rŽ   r.   r�   Ú
enumvaluesr  )r   r`   rn   r=   Ú
enumeratorr!  r<   Ú	enumvalues           r   r  z&VGenericEngine._generate_gen_enum_declý  s±   € Ø�:Š:Ø Ÿnœn�
Ø×(Ñ(¨¨zÕ:ð -àà×&Ñ& v¨tÓ4ˆØ×Ñ×"Ñ" 8Ô,Ø�z‰zˆÙÐ&¨Ñ1Ô2ÙˆSŒ	Ü%(¨¯©¸¿¹Ö%GÑ!ˆJ˜	Ø×*Ñ*¨:°yÕAð &Háˆ]ÔÙˆSŒ	Ù�r   c           	      óô   — |j                   rC|j                  D �cg c]  }| j                  d|||«      ‘Œ }}t        |«      |_        d|_        y | j                  ||«      }| j                  ||«       y c c}w )NT)rô   r>  r©   r¯   r?  Úpartial_resolvedr<  r(  )r   r`   rn   rM   r=   r@  r?  r!  s           r   r  z VGenericEngine._loading_gen_enum  sy   € Ø�:Š:à,.¯NªNó<Ù,:˜jð ×-Ñ-¨d°B¸
ÀFÕKØ,:ð ð <ä! *Ó-ˆBŒMØ"&ˆBÕà×*Ñ*¨6°4Ó8ˆHØ×)Ñ)¨&°(Õ;ùò<s   ›A5c                 ó¶   — t        |j                  |j                  «      D ]6  \  }}t        |||«       t	        |«      j
                  j                  |«       Œ8 y r   )r�   r>  r?  r³   r™   rE   rŽ   )r   r`   rn   rM   rP   r@  rA  s          r   r  zVGenericEngine._loaded_gen_enum  sE   € Ü%(¨¯©¸¿¹Ö%GÑ!ˆJ˜	Ü�G˜Z¨Ô3Ü�‹M×#Ñ#×*Ñ*¨:Õ6ñ &Hr   c                 ó@   — |dk(  rd }n|}| j                  d||¬«       y ©Nz...T)r   )r‰   )r   r`   rn   r   s       r   Ú_generate_gen_macro_declz'VGenericEngine._generate_gen_macro_decl   s(   € Ø�Š;Ø‰KàˆKØ× Ñ   t¸Ð ÕEr   c                 ó¦   — |dk(  rd }n|}| j                  d||||¬«      }t        |||«       t        |«      j                  j	                  |«       y rF  )r©   r³   r™   rE   rŽ   )r   r`   rn   rM   rP   r   r*  s          r   Ú_loaded_gen_macroz VGenericEngine._loaded_gen_macro)  sW   € Ø�Š;Ø‰KàˆKØ×#Ñ# D¨"¨d°FØ0;ð $ó =ˆä�˜˜uÔ%ÜˆW‹×Ñ×&Ñ& tÕ,r   c                 ó¸  — t        |t        j                  «      r–|j                  «       rS| j                  }d|›�}| j
                  j                  |«        |d|z  «        |d«        |d|›d�«        |d«       t        j                  |j                  «      }| j                  d||«       y t        j                  |«      }| j                  d||d¬	«       y )
NÚ_cffi_sizeof_zsize_t %s(void)r‚   z  return sizeof(r„   r…   Fr  )r  )
r†   r   rè   Úlength_is_unknownr.   r   rŽ   r«   Úitemr‰   )r   r`   rn   r<   r!  Útp_ptrs         r   Ú_generate_gen_variable_declz*VGenericEngine._generate_gen_variable_decl6  sµ   € Ü�bœ%Ÿ/™/Ô*Ø×#Ñ#Ô%Ø—z‘z‘Ù04Ð6�Ø×#Ñ#×*Ñ*¨8Ô4ÙÐ&¨Ñ1Ô2Ù�S”	ÚªtÐ5Ô6Ù�S”	Ü×&Ñ& r§w¡wÓ/ˆFØ×$Ñ$ U¨D°&Õ9ä×&Ñ& rÓ*ˆFØ×$Ñ$ U¨D°&À5Ð$ÕIr   c                 óT  ‡— t        |t        j                  «      �rr|j                  «       rºd|›�}| j                  j                  d«      d   }|j                  ||«      } |«       }| j                  j                  |j                  «      }	t        || j                  j                  |	«      «      \  }
}|dk7  rt        d|›d|j                  ›�«      ‚|j                  |
«      }t        j                  |j                  «      }| j                  d|||«      }|j                  �7| j                  j                  |«      }| j                  j!                  ||«      }t#        |||«       t%        |«      j&                  j)                  |«       y d|z  }| j                  j                  |j+                  d|«      «      d   }|j                  ||«      } |«       Šˆfd	„}ˆfd
„}t#        t%        |«      |t-        ||«      «       t%        |«      j&                  j)                  |«       y )NrK  zsize_t(*)(void)r   z
bad size: z! does not seem to be an array of Fz_cffi_var_%sz
*(*)(void)c                 ó   •— ‰d   S r½   r&   )rP   Úptrs    €r   Úgetterz3VGenericEngine._loaded_gen_variable.<locals>.getterg  s   ø€ Ø�q‘6ˆMr   c                 ó   •— |‰d<   y r½   r&   )rP   r*  rR  s     €r   Úsetterz3VGenericEngine._loaded_gen_variable.<locals>.setteri  s   ø€ ØˆC�ŠFr   )r†   r   rè   rL  r   ró   r±   r°   rM  Údivmodr  r   Úresolve_lengthr«   r©   ré   Úcastr³   r™   rE   rŽ   r�   Úproperty)r   r`   rn   rM   rP   r!  r¹   r÷   ÚsizeÚ	BItemTyperé   ÚrestrN  r*  ÚBArrayrS  rU  rR  s                    @r   Ú_loaded_gen_variablez#VGenericEngine._loaded_gen_variableH  sÈ  ø€ Ü�bœ%Ÿ/™/Õ*à×#Ñ#Õ%Ù04Ð6�ØŸ™×/Ñ/Ð0AÓBÀ1ÑE�Ø!×/Ñ/°°xÓ@�Ù“z�Ø ŸH™H×6Ñ6°r·w±wÓ?�	Ü% d¨D¯H©H¯O©O¸IÓ,FÓG‘�˜Ø˜1’9Ý+â˜rŸwšwð(ó)ð )ð ×&Ñ& vÓ.�Ü×&Ñ& r§w¡wÓ/ˆFØ×'Ñ'¨¨v°t¸VÓDˆEð �y‰yÐ$ØŸ™×3Ñ3°BÓ7�ØŸ™Ÿ™ f¨eÓ4�Ü�G˜T 5Ô)Ü�‹M×#Ñ#×*Ñ*¨4Ô0Øð " DÑ(ˆØ—‘×'Ñ'¨¯©°lÀDÓ(IÓJÈ1ÑMˆØ×'Ñ'¨¨xÓ8ˆÙ‹jˆô	ô	ä”�W“˜t¤X¨f°fÓ%=Ô>ÜˆW‹×Ñ×&Ñ& tÕ,r   )rN   )r   )Nr  Nr   )Úenum)5rH   rI   rJ   Ú
_class_keyÚ_gen_python_moduler   r   r$   r'   r.   r?   rT   rc   r8   rU   rw   rz   Ú_generate_gen_typedef_declÚ_loading_gen_typedefÚ_loaded_gen_typedefr¢   Ú_loading_gen_functionrº   r²   rË   rÐ   rÔ   rÙ   rÛ   rÝ   rÊ   rÎ   rÓ   r  r  r  r‰   r%  Ú_loading_gen_constantr©   r0  r  r(  r<  r  r  r  rG  Ú_loading_gen_macrorI  rO  Ú_loading_gen_variabler^  r&   r   r   r   r      s$  „ Ø€JØÐò/ò?ò$òó#ò>ó,ò8òòòòð $5ÐØ#/ÐØ#/Ðò
+ðZ )Ðò"-òHò&@òBò)ò?òAò)ò/òbBò8$òD>ò@ò-ð CJØ(,ó#òJ3ð )Ðóò8-òò&	+ò0ó
ó"<ò7òFð &Ðò-òJð  )Ðó$-r   r   ac  
#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
# define _cffi_float_complex_t   _Fcomplex    /* include <complex.h> for it */
# define _cffi_double_complex_t  _Dcomplex    /* include <complex.h> for it */
#else
# include <stdint.h>
# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux)
#  include <alloca.h>
# endif
# define _cffi_float_complex_t   float _Complex
# define _cffi_double_complex_t  double _Complex
#endif
)
r   r   rV   rN   r   r6  r   Úobjectr   r6   r&   r   r   Ú<module>rj     s)   ð÷ Û å Ý $ôa	-�Vô a	-ðF9�r   