
    Yh;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     a/var/www/django-portfolio.reubendavern.link/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   sa    $ 	$I"Y.H|xx $77<<:77>>(+#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    dTk"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}    zz^T]]##$ 	v
 <<7"4'"mm335GFG<= #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    ((##77<<		4==+G+GH%%h6 	

69%	, 	,)) 	, R. 	

68W
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 H.c:BRy H 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 	HD"!ZZQ/ND(> @I(K L
r8$	
 " >'5<> >>
  ++At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   s~    ..0 	HD"!ZZQ/ND(T9d#CDFr8V4t4		
  ++At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;; $$UD"5zzbgg, ) 	8GAtK$ 3 34!OOG{A&667		8
 #T)$'$:< tS ??53;8 < <99h 3 34NN1h11%ABH))G$."T)"";/66&&3,CC"%{G< 4'X  734S	bii!4!45!KBIIu~~6#KKk481DEFS	5<s   Ic                 x   t        |t        j                        sJ |j                  r| j	                  d|||      }ng }|}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     LSJsE$7$78Ls   $&'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;;--eRvFKLGLBGGLL!"))U-@-@A "'0 .FAs!#u':':;#//4$++QH5!((-	.
 #%))ou/B/BC&//7',;,G,G,I)L M M ',&7&7&HO!((O< ''Ho+FG&+ooO**5+?+:BKKIHH..r2E&-K ..ukBK& A3"77Q8?A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&    ggen#d#1v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>    BQx7<<tAw#?"AAD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$    rww++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$    rww++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   ;; /5t<17>"D)002zzu=>S	GH\-/]]_ 	0)E5(E5%"5"56))+A.670((E1A(O  	0 	S	"">2.:;S	;eCD+,&'89-/]]_ 	D)E5(E1}E59:%1ell6J'%*;*;*==>UEBC	D 	XV !BC=*+S	1 ) 0A.//0s   :$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1ueMM!1HC	 
 b%--.2:: q	I#AYNadd|Hqt!tIx=C	NFc"++6FFFFFF%y)^KBN &-446E4:EMD--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  sQ   ;;""2&222;
 ((C++B/G ==AA"EMFE&)SZZ02DE&)S[[13JKA13 	-uhq=fQigu!=5:<>!A#;!# 2259F&1+szz&'97<>@Q	 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%..)((T2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%..)""2tVR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!!"dF;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   zz$,d3""8,"M6w&&&*X56I**4=Iw&&&/(:;Id<=$01I>!>&&&5 		E7"z"e6I6I'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9K9K9M  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*"M6))&(;E* ) HH++L9!<EHH++,@A!DE++E8<HU#A{H!IEqy HH33K@C	!$((//)"< <=>  &&&%K"e112!K/HH++BMM+t,LMaPE++E8<HJE"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9K9K9M##FB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    zzA:9dE=# # $ DdEH# # $ !!D()84?@ZA 	IJ,Tc
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HHLL$A;?HHOOA&E4'E7+#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    :: nn ;
((z:;&&vt4""8,zz&12S	%(%G 	B!J	**:yA	B]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  sv    ::,.NN<( --dB
FK <J <!*-BM"&B**648H))&(;<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  sI    %(%G 	7!J	GZ3M##**:6	7r   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"dF0; $ =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%//*##%zz046##**84&12S	t56S	&&rww/F$$UD&9&&r*F$$UD&5$Ir   c                 T   t        |t        j                        rr|j                         rd|}| 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    q6Mr   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B1E!//x@z HH66rww?	%dDHHOOI,FG19+rww() ) &&v.&&rww/F''vtVDE yy$33B7fe4GT5)M##**40 "D(''lD(IJ1M''x8j		WtXff%=>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   