
\c           @   sX   d  d l  Z  d  d l Z d d l m Z d d l m Z d e f d     YZ d Z d S(   iNi   (   t   model(   t   VerificationErrort   VCPythonEnginec           B   su  e  Z d  Z e Z d   Z d   Z d   Z d   Z d d  Z	 d   Z
 d   Z d	   Z d7 d
  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e Z e Z e Z e Z e Z d   Z d   Z d   Z e Z  d   Z! e Z" d   Z# d   Z$ d   Z% d   Z& e Z' d   Z( d   Z) d   Z* d   Z+ d    Z, d!   Z- d"   Z. d#   Z/ e Z0 d$   Z1 d%   Z2 d&   Z3 d'   Z4 d7 d( d7 e e5 d7 d)  Z6 d*   Z7 d+   Z8 e Z9 e Z: e Z; d d,  Z< d-   Z= d. d/  Z> e Z? e Z@ d0   ZA d1   ZB d2   ZC e ZD e ZE e ZF e ZG d3   ZH d4   ZI e ZJ e ZK d5   ZL d6   ZM RS(8   t   xc         C   s+   | |  _  | j |  _ i  |  _ i  |  _ d  S(   N(   t   verifiert   ffit   _struct_pending_verificationt   _types_of_builtin_functions(   t   selfR   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   __init__   s    		c         C   s   d  S(   N(    (   R   t   kwds(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   patch_extension_kwds   s    c         C   se   y t  j | |  \ } } } Wn t k
 r3 d  SX| d  k	 rM | j   n  | d | k ra d  S| S(   Ni    (   t   impt   find_modulet   ImportErrort   Nonet   close(   R   t   module_namet   patht   so_suffixest   ft   filenamet   descr(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR      s    c         C   s   i  |  _  |  j d  d  S(   Nt   collecttype(   t
   _typesdictt	   _generate(   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   collect_types$   s    	t    c         C   s   |  j  j | d  d  S(   Ns   
(   t   _ft   write(   R   t   what(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _prnt(   s    c         C   s   |  j  | S(   N(   R   (   R   t   type(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _gettypenum+   s    c         C   sT   t  | t j  s" | j d k rP | |  j k rP t |  j  } | |  j | <n  d  S(   Ns   long double(   t
   isinstanceR    t   PrimitiveTypet   nameR   t   len(   R   t   tpt   num(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _do_collect_type/   s
    c         C   sc  |  j    d d g |  _ |  j } | t  |   | |  j j  |   |  j d  |  j   |   | d  |  j d  | d  | d  | d  |   |  j j   } |  j t	 } | d  |   | d	  | d
  | d |  | d  | d  | d  | d  | d  |   | d  | d |  | d  | d  | d  | d  | d  | d | f  | d  | d  | d  | d  | d  |   | d  |   | d  | d |  | d  | d  | d |  | d  | d  | d  | f  | d  | d!  | d  |   | d"  d  S(#   Ns   ((void)lib,0)t   decls&   static PyMethodDef _cffi_methods[] = {t   methods3     {"_cffi_setup", _cffi_setup, METH_VARARGS, NULL},s)     {NULL, NULL, 0, NULL}    /* Sentinel */s   };s   #if PY_MAJOR_VERSION >= 3s.   static struct PyModuleDef _cffi_module_def = {s     PyModuleDef_HEAD_INIT,s     "%s",s     NULL,s     -1,s     _cffi_methods,s     NULL, NULL, NULL, NULLt   PyMODINIT_FUNCs   PyInit_%s(void)t   {s     PyObject *lib;s+     lib = PyModule_Create(&_cffi_module_def);s     if (lib == NULL)s       return NULL;s#     if (%s < 0 || _cffi_init() < 0) {s       Py_DECREF(lib);s     }s     return lib;t   }s   #elses   init%s(void)s+     lib = Py_InitModule("%s", _cffi_methods);s       return;s!     if (%s < 0 || _cffi_init() < 0)s	     return;s   #endif(
   R   t   _chained_list_constantsR   t   cffimod_headerR   t   preambleR   t   _generate_setup_customt   get_module_namet   False(   R   t   prntt   modnamet	   constants(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   write_source_to_f6   st    
	

































c            s  t  j   z t t d  r+ t j   } n  z yP t t d  r\ | d  k	 r\ t j |  n  t  j  j j	    j j
   Wn5 t k
 r } d  j j
 | f } t |   n XWd  t t d  r t j |  n  XWd  t  j   X j  d  t g   j j   D] \ } } | | f ^ q } g  t t |   D] } | | ^ q@}	 t t  j j |	   }	 d t f     f d     Y      }
  j |	 t |
  rd d  l } | j d  j j	    n   j  d	 d
 |
  j  _  j  _ |
 S(   Nt   getdlopenflagst   setdlopenflagss   importing %r: %st   loadingt
   FFILibraryc              s,   e  Z  Z  j Z g  Z   f d    Z RS(   c            s     j  t |  j  S(   N(   t	   _cffi_dirt   listt   __dict__(   R   (   R;   (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   __dir__   s    (   t   __name__t
   __module__t   _cffi_python_moduleR   t	   _cffi_ffiR<   R?   (    (   R;   t   moduleR   (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR;      s   	is0   reimporting %r might overwrite older definitionst   loadedt   library(   R   t   acquire_lockt   hasattrt   sysR8   R   R9   t   load_dynamicR   R2   t   modulefilenameR   R   t   release_lockt   _loadt   dictR   t   itemst   rangeR%   R=   t   mapR   t   _get_cached_btypet   objectt   _cffi_setupt   warningst   warnt   _cffi_original_ffiR   t   _cffi_types_of_builtin_funcs(   R   t   flagst   previous_flagst   et   errort   keyt   valuet
   revmappingt   it   lstRF   RU   (    (   R;   RD   R   s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   load_library   s>    
 .)"		c         C   sH   g  |  j  j j j   D] \ } \ } } | | f ^ q } | j   | S(   N(   R   t   _parsert   _declarationsRO   t   sort(   R   R]   R&   t   qualRa   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _get_declarations   s    7
c         C   s   x |  j    D] \ } } | j d d  \ } } y t |  d | | f  } Wn! t k
 rq t d |   n Xy | | |  Wq t k
 r } t j | |    q Xq Wd  S(   Nt    i   s   _generate_cpy_%s_%ss   not implemented in verify(): %r(   Rg   t   splitt   getattrt   AttributeErrorR   t	   ExceptionR    t   attach_exception_info(   R   t	   step_nameR$   R&   t   kindt   realnameR*   R[   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR      s    c   
      K   s   x |  j    D]} \ } } | j d d  \ } } t |  d | | f  } y | | | | |  Wq t k
 r }	 t j |	 |    q Xq Wd  S(   NRh   i   s
   _%s_cpy_%s(   Rg   Ri   Rj   Rl   R    Rm   (
   R   RD   Rn   R
   R$   R&   Ro   Rp   R*   R[   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyRM      s    c         C   s   d  S(   N(    (   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_nothing   s    c         K   s   d  S(   N(    (   R   R&   R$   RD   R
   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loaded_noop   s    c         C   s  d } t  | t j  rz | j   rI | j d k rI d } d | j } n( d | j d  | j j d d  f } d } n t  | t j  r |  j | | | |  d  St  | t j	 t j
 f  r |  j d	 | |  j |  | f  |  j d
 |  d  St  | t j  r:d | j d  } d |  j |  } d } n t |   |  j d | | | | f  |  j d | | j d  | f  |  j d
 |  d  S(   NR   t   _Boolt   _cffi_to_c_ints   , %ss   (%s)_cffi_to_c_%sRh   t   _s   -1s6     if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)s       %s;s   (%s)_cffi_to_c_pointers   , _cffi_type(%d)t   NULLs     %s = %s(%s%s);s'     if (%s == (%s)%s && PyErr_Occurred())(   R"   R    R#   t   is_integer_typeR$   t
   get_c_namet   replacet   PointerTypet"   _convert_funcarg_to_c_ptr_or_arrayt   StructOrUniont   EnumTypeR   R!   t   FunctionPtrTypet   NotImplementedError(   R   R&   t   fromvart   tovart   errcodet   extraargt	   convertert   errvalue(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _convert_funcarg_to_c   s4    	
			c         C   s&   t  | t j  r" | j d  n  d  S(   Ns   Py_ssize_t datasize(   R"   R    Rz   t   add(   R   R&   t	   localvars(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _extra_local_variables  s    c         C   s   |  j  d  |  j  d |  j |  | | f  |  j  d  |  j  d  |  j  d |  |  j  d | f  |  j  d | f  |  j  d | |  j |  | f  |  j  d |  |  j  d	  d  S(
   Ns1     datasize = _cffi_prepare_pointer_call_argument(s(         _cffi_type(%d), %s, (char **)&%s);s     if (datasize != 0) {s       if (datasize < 0)s	         %s;s"       %s = alloca((size_t)datasize);s,       memset((void *)%s, 0, (size_t)datasize);sL       if (_cffi_convert_array_from_object((char *)%s, _cffi_type(%d), %s) < 0)s     }(   R   R!   (   R   R&   R   R   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR{     s    		c         C   s{  t  | t j  r | j   r> | j d k r> d | | j f S| j d k rj d | j j d d  | f Sd | |  j |  f Sn t  | t j t j f  r d | |  j |  f St  | t j	  r d | |  j t j | j
   f St  | t j  rB| j d  k r+t d	 | j   | f   n  d
 | |  j |  f St  | t j  rkd | |  j |  f St |   d  S(   NRs   s   _cffi_from_c_int(%s, %s)s   long doubles   _cffi_from_c_%s(%s)Rh   Ru   s/   _cffi_from_c_deref((char *)&%s, _cffi_type(%d))s0   _cffi_from_c_pointer((char *)%s, _cffi_type(%d))s!   '%s' is used as %s, but is opaques0   _cffi_from_c_struct((char *)&%s, _cffi_type(%d))(   R"   R    R#   Rw   R$   Ry   R!   Rz   R~   t	   ArrayTypet   itemR|   t   fldnamesR   t	   TypeErrort   _get_c_nameR}   R   (   R   R&   t   vart   context(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _convert_expr_from_c)  s.     c         C   sf   t  | t j  s t  | j r1 |  j |  n1 x | j D] } |  j |  q; W|  j | j  d  S(   N(   R"   R    R~   t   AssertionErrort   ellipsisR(   t   argst   result(   R   R&   R$   R    (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt"   _generate_cpy_function_collecttypeP  s    	c      	   C   sX  t  | t j  s t  | j r8 |  j t | |  d  S|  j } t | j	  } | d k re d } n | d k rz d } n d } | d  | d | | f  | d  d	 | } x; t
 | j	  D]* \ } } | d
 | j d | |   q Wt   }	 x! | j	 D] } |  j | |	  qWx |	 D] }
 | d
 |
 f  q$Wt  | j t j  sd } d | } | d
 | j j d |   n d } t | j	  d k r"t t | j	   } x | D] } | d |  qW|   | d d | | d j g  | D] } d | ^ q f  | d  n  |   xB t
 | j	  D]1 \ } } |  j | d | d | d  |   q9W| d  | d  | d | | d j g  t t | j	   D] } d | ^ q f  | d  | d  |   | d  | d k r| d  n  | r/| d  |  j | j d! d"   n | d#  | d$  | d%  |   d  S(&   Ni    t   noargi   t   arg0R   s   static PyObject *s(   _cffi_f_%s(PyObject *self, PyObject *%s)R,   s   argument of %ss     %s;s    x%ds	   result = s   result of %ss    resultR   s     PyObject *arg%d;s+     if (!PyArg_ParseTuple(args, "%s:%s", %s))t   Os   , s   &arg%ds       return NULL;s   arg%ds   x%ds   return NULLs     Py_BEGIN_ALLOW_THREADSs     _cffi_restore_errno();s     { %s%s(%s); }s     _cffi_save_errno();s     Py_END_ALLOW_THREADSs     (void)self; /* unused */s     (void)noarg; /* unused */s     return %s;R   s   result types     Py_INCREF(Py_None);s     return Py_None;R-   (   R"   R    R~   R   R   t   _generate_cpy_constR3   R   R%   R   t	   enumerateRx   t   setR   R   t   VoidTypeRP   t   joinR   R   (   R   R&   R$   R4   t   numargst   argnameR   R`   R    R   R)   t   result_codet   rng(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_function_decl[  st    				


"	
 5

:





c         C   sj   | j  r d  St | j  } | d k r1 d } n | d k rF d } n d } |  j d | | | f  d  S(   Ni    t   METH_NOARGSi   t   METH_Ot   METH_VARARGSs     {"%s", _cffi_f_%s, %s, NULL},(   R   R%   R   R   (   R   R&   R$   R   t   meth(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_function_method  s    			c         C   s=   | j  r d  St | |  } t | | |  | |  j | <d  S(   N(   R   Rj   t   setattrR   (   R   R&   R$   RD   RF   t   func(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loaded_cpy_function  s
    	c         C   s,   | | j  k s t  |  j | d |  d  S(   Nt   struct(   R$   R   t   _generate_struct_or_union_decl(   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_struct_decl  s    c         C   s   |  j  | d |  d  S(   NR   (   t    _generate_struct_or_union_method(   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_struct_method  s    c         C   s   |  j  | d | |  d  S(   NR   (   t   _loading_struct_or_union(   R   R&   R$   RD   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loading_cpy_struct  s    c         K   s   |  j  |  d  S(   N(   t   _loaded_struct_or_union(   R   R&   R$   RD   R
   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loaded_cpy_struct  s    c         C   s,   | | j  k s t  |  j | d |  d  S(   Nt   union(   R$   R   R   (   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_union_decl  s    c         C   s   |  j  | d |  d  S(   NR   (   R   (   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_union_method  s    c         C   s   |  j  | d | |  d  S(   NR   (   R   (   R   R&   R$   RD   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loading_cpy_union  s    c         K   s   |  j  |  d  S(   N(   R   (   R   R&   R$   RD   R
   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loaded_cpy_union  s    c         C   s  | j  d  k r d  Sd | | 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	 |  q y. | d
 |	 j	 d d | d | | f  Wq t
 k
 r5} | d t |   q Xq W| d  | d  | d | f  | d  | d |  | d  | d |  | d  x | j   D] \ } }	 }
 } |
 d k rqn  | d | | f  t |	 t j  r|	 j d  k r| d |	 j    q| d | | f  qW| d  | d  | d  | d  | d  | d  | d | f  | d  |   d  S(    Ns   _cffi_check_%s_%ss   _cffi_layout_%s_%ss   %s %ss   static void %s(%s *p)R,   s8     /* only to generate compile-time warnings or errors */s
     (void)p;i    s     (void)((p->%s) << 1);s     { %s = &p->%s; (void)tmp; }s   *tmps   field %rt   qualss
     /* %s */R-   s   static PyObject *s#   %s(PyObject *self, PyObject *noarg)s,     struct _cffi_aligncheck { char x; %s y; };s     static Py_ssize_t nums[] = {s       sizeof(%s),s)       offsetof(struct _cffi_aligncheck, y),s       offsetof(%s, %s),s       0,  /* %s */s       sizeof(((%s *)0)->%s),s       -1s     };s     (void)self; /* unused */s     (void)noarg; /* unused */s'     return _cffi_get_struct_layout(nums);s3     /* the next line is not executed, but compiled */s     %s(0);(   R   R   t   stripR   t
   enumfieldsR"   R    R#   Rw   Rx   R   t   strR   t   lengthR   (   R   R&   t   prefixR$   t   checkfuncnamet   layoutfuncnamet   cnameR4   t   fnamet   ftypet   fbitsizet   fqualR[   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     sX    	







!






c         C   s>   | j  d  k r d  Sd | | f } |  j d | | f  d  S(   Ns   _cffi_layout_%s_%ss      {"%s", %s, METH_NOARGS, NULL},(   R   R   R   (   R   R&   R   R$   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     s
    c         C   s  | j  d  k r d  Sd | | f } t | |  } |   } 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(   Ns   _cffi_layout_%s_%si    i   i   i   s   %s %s(   R   R   Rj   R"   R    R|   t   partialt   force_flattenR%   R   t   fixedlayoutR   R   (   R   R&   R   R$   RD   R   t   functiont   layoutt	   totalsizet   totalalignmentt   fieldofst	   fieldsizeR   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     s    	


7c         C   s~  | j  d  k r d  S|  j j |  | |  j k rzd   } |  j } | j |  } |  j j |  \ } } | | d | j |  d  | | d | j |  d  d } x | j   D] \ } }	 }
 } |
 d k r q n  | | | | j	 | |  d | f  | | d d k rQ| j |	  } | | | d | j |  d | f  n  | d 7} q W| t
 |  k szt  n  d  S(	   Nc         S   s,   |  | k r( t  d | | |  f   n  d  S(   Ns'   %s (we have %d, but C compiler says %d)(   R   (   t	   realvaluet   expectedvaluet   msg(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   check(  s    i    s   wrong total sizei   s   wrong total alignmenti   s   wrong offset for field %rs   wrong size for field %r(   R   R   R   RR   R   t   popt   sizeoft   alignofR   t   offsetofR%   R   (   R   R&   R   R   t   BStructR   R   R`   R   R   R   R   t   BField(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR   !  s,    		c         C   s?   t  | t j  r( |  j | | d  n |  j | d |  d  S(   NR   (   R"   R    R}   t   _generate_cpy_enum_declR   (   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_anonymous_declE  s    c         C   s,   t  | t j  s( |  j | d |  n  d  S(   NR   (   R"   R    R}   R   (   R   R&   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_anonymous_methodK  s    c         C   sB   t  | t j  r( |  j | | |  n |  j | d | |  d  S(   NR   (   R"   R    R}   t   _loading_cpy_enumR   (   R   R&   R$   RD   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loading_cpy_anonymousO  s    c         K   s<   t  | t j  r+ |  j | | | |  n |  j |  d  S(   N(   R"   R    R}   t   _loaded_cpy_enumR   (   R   R&   R$   RD   R
   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loaded_cpy_anonymousU  s    t   constc	         C   s  |  j  }	 d | | f }
 |	 d |
  |	 d  |	 d  |	 d  | sn |	 d | pZ | j d |   n | d k s t  | d  k	 r |  j | |  n  | s| d	 k r d
 | } n | } |	 d | f  |	 d |  j | d d  f  | st  n |	 d |  |	 d  |	 d  | r||	 d  |	 d  |	 d | f  |	 d  |	 d  |	 d  |	 d  n  |	 d |  |	 d  |	 d  |	 d  |	 d |  j |  |
 d |  j | <|	 d  |	   d  S(   Ns   _cffi_%s_%ss   static int %s(PyObject *lib)R,   s     PyObject *o;s
     int res;s     %s;s    iR   R   t   &s     i = (%s);s	     o = %s;R`   s   variable types!     o = _cffi_from_c_int_const(%s);s     if (o == NULL)s       return -1;s     {s       PyObject *o1 = o;s8       o = Py_BuildValue("On", o1, (Py_ssize_t)sizeof(%s));s       Py_DECREF(o1);s       if (o == NULL)s         return -1;s     }s-     res = PyObject_SetAttrString(lib, "%s", o);s     Py_DECREF(o);s     if (res < 0)s     return %s;s   (lib)R-   (   R   Rx   R   R   t   _check_int_constant_valueR   R.   (   R   t   is_intR$   R&   t   categoryt   vartpt   delayedt   size_toot   check_valueR4   t   funcnamet   realexpr(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR   ^  sN    	


#










c         C   s8   t  | t j  o | j   } | s4 |  j |  n  d  S(   N(   R"   R    R#   Rw   R(   (   R   R&   R$   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt"   _generate_cpy_constant_collecttype  s    c         C   s5   t  | t j  o | j   } |  j | | |  d  S(   N(   R"   R    R#   Rw   R   (   R   R&   R$   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_constant_decl  s    c         C   s   |  j  } | d k r/ | d | | | f  n | d | | | f  | d  | d |  | d |  | d  | d |  | d	  | d
  | d | | | f  | d  | d  d  S(   Ni    s&     if ((%s) > 0 || (long)(%s) != %dL) {s1     if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {s       char buf[64];s       if ((%s) <= 0)s.           snprintf(buf, 63, "%%ld", (long)(%s));s       elses7           snprintf(buf, 63, "%%lu", (unsigned long)(%s));s)       PyErr_Format(_cffi_VerificationError,s6                    "%s%s has the real value %s, not %s",s(                    "%s", "%s", buf, "%d");s       return -1;s     }(   R   (   R   R$   R^   t
   err_prefixR4   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     s$    	




c         C   s    | j  d d  } d | | f S(   Nt   $t   ___D_s   _cffi_e_%s_%s(   Ry   (   R   R   R$   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _enum_funcname  s    t   enumc         C   s   | j  r7 x' | j D] } |  j t | d t q Wd  S|  j | |  } |  j } | d |  | d  x: t | j | j  D]# \ } } |  j	 | | d |  q W| d |  j
 t  | d |  j
 t <| d  |   d  S(   NR   s   static int %s(PyObject *lib)R,   s	   enum %s: s     return %s;s   (lib)R-   (   R   t   enumeratorsR   t   TrueR3   R   R   t   zipt
   enumvaluesR   R.   (   R   R&   R$   R   t
   enumeratorR   R4   t	   enumvalue(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     s    		
"
c         C   sM   | j  rI g  | j D] } t | |  ^ q } t |  | _ t | _ n  d  S(   N(   R   R   Rj   t   tupleR   R   t   partial_resolved(   R   R&   R$   RD   R   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     s
    	"c         C   s:   x3 t  | j | j  D] \ } } t | | |  q Wd  S(   N(   R   R   R   R   (   R   R&   R$   RD   RF   R   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR     s    "c         C   s5   | d k r d  } n | } |  j t | d | d  S(   Ns   ...R   (   R   R   R   (   R   R&   R$   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_macro_decl  s    	c         C   sG   t  | t j  r' t j | j  } n t j |  } |  j |  d  S(   N(   R"   R    R   Rz   R   R(   (   R   R&   R$   t   tp_ptr(    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt"   _generate_cpy_variable_collecttype  s    c      	   C   s{   t  | t j  rO t j | j  } |  j t | | d | d | j d k n( t j |  } |  j t | | d d d  S(   NR   R   s   ...R   R   (   R"   R    R   Rz   R   R   R3   R   (   R   R&   R$   R   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _generate_cpy_variable_decl  s    c            sx  t  | |  } t | t j  r| j d k r t | t  sE t  | \ } } |  j j | j	  } t
 | |  j j |   \ } }	 |	 d k r t d | | j	 f   n  | j |  } n  | j d  k	 r
|  j j |  }
 |  j j |
 |  } t | | |  n  d  S|   t | |    f d   }   f d   } t t |  | t | |   t |  j j |  d  S(   Ns   ...i    s/   bad size: %r does not seem to be an array of %sc            s     d S(   Ni    (    (   RF   (   t   ptr(    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   getter  s    c            s   |   d <d  S(   Ni    (    (   RF   R^   (   R   (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   setter  s    (   Rj   R"   R    R   R   R   R   R   RR   R   t   divmodR   R   t   resolve_lengthR   t   castR   t   delattrR    t   propertyR<   t   append(   R   R&   R$   RD   RF   R^   t   sizet	   BItemTypeR   t   restt   BArrayR   R  (    (   R   s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   _loaded_cpy_variable  s.    !c         C   s@   |  j  } | d  | d  | d |  j t  | d  d  S(   Ns,   static int _cffi_setup_custom(PyObject *lib)R,   s     return %s;R-   (   R   R.   R   (   R   R4   (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR1     s
    	

N(N   R@   RA   t
   _class_keyR   t   _gen_python_moduleR	   R   R   R   R   R!   R(   R7   R   Rb   Rg   R   RM   Rq   Rr   R   R   R{   R   t!   _generate_cpy_typedef_collecttypet   _generate_cpy_typedef_declt   _generate_cpy_typedef_methodt   _loading_cpy_typedeft   _loaded_cpy_typedefR   R   R   t   _loading_cpy_functionR   t    _generate_cpy_struct_collecttypeR   R   R   R   t   _generate_cpy_union_collecttypeR   R   R   R   R   R   R   R   t#   _generate_cpy_anonymous_collecttypeR   R   R   R   R3   R   R   R   t   _generate_cpy_constant_methodt   _loading_cpy_constantt   _loaded_cpy_constantR   R   R   t   _generate_cpy_enum_collecttypet   _generate_cpy_enum_methodR   R   R   t   _generate_cpy_macro_collecttypet   _generate_cpy_macro_methodt   _loading_cpy_macrot   _loaded_cpy_macroR   R   t   _generate_cpy_variable_methodt   _loading_cpy_variableR  R1   (    (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyR   	   s   							[:			
			$					I		
									3			"						.										"st#  
#include <Python.h>
#include <stddef.h>

/* this block of #ifs should be kept exactly identical between
   c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py
   and cffi/_cffi_include.h */
#if defined(_MSC_VER)
# include <malloc.h>   /* for alloca() */
# if _MSC_VER < 1600   /* MSVC < 2010 */
   typedef __int8 int8_t;
   typedef __int16 int16_t;
   typedef __int32 int32_t;
   typedef __int64 int64_t;
   typedef unsigned __int8 uint8_t;
   typedef unsigned __int16 uint16_t;
   typedef unsigned __int32 uint32_t;
   typedef unsigned __int64 uint64_t;
   typedef __int8 int_least8_t;
   typedef __int16 int_least16_t;
   typedef __int32 int_least32_t;
   typedef __int64 int_least64_t;
   typedef unsigned __int8 uint_least8_t;
   typedef unsigned __int16 uint_least16_t;
   typedef unsigned __int32 uint_least32_t;
   typedef unsigned __int64 uint_least64_t;
   typedef __int8 int_fast8_t;
   typedef __int16 int_fast16_t;
   typedef __int32 int_fast32_t;
   typedef __int64 int_fast64_t;
   typedef unsigned __int8 uint_fast8_t;
   typedef unsigned __int16 uint_fast16_t;
   typedef unsigned __int32 uint_fast32_t;
   typedef unsigned __int64 uint_fast64_t;
   typedef __int64 intmax_t;
   typedef unsigned __int64 uintmax_t;
# else
#  include <stdint.h>
# endif
# if _MSC_VER < 1800   /* MSVC < 2013 */
#  ifndef __cplusplus
    typedef unsigned char _Bool;
#  endif
# endif
#else
# include <stdint.h>
# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux)
#  include <alloca.h>
# endif
#endif

#if PY_MAJOR_VERSION < 3
# undef PyCapsule_CheckExact
# undef PyCapsule_GetPointer
# define PyCapsule_CheckExact(capsule) (PyCObject_Check(capsule))
# define PyCapsule_GetPointer(capsule, name) \
    (PyCObject_AsVoidPtr(capsule))
#endif

#if PY_MAJOR_VERSION >= 3
# define PyInt_FromLong PyLong_FromLong
#endif

#define _cffi_from_c_double PyFloat_FromDouble
#define _cffi_from_c_float PyFloat_FromDouble
#define _cffi_from_c_long PyInt_FromLong
#define _cffi_from_c_ulong PyLong_FromUnsignedLong
#define _cffi_from_c_longlong PyLong_FromLongLong
#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong
#define _cffi_from_c__Bool PyBool_FromLong

#define _cffi_to_c_double PyFloat_AsDouble
#define _cffi_to_c_float PyFloat_AsDouble

#define _cffi_from_c_int_const(x)                                        \
    (((x) > 0) ?                                                         \
        ((unsigned long long)(x) <= (unsigned long long)LONG_MAX) ?      \
            PyInt_FromLong((long)(x)) :                                  \
            PyLong_FromUnsignedLongLong((unsigned long long)(x)) :       \
        ((long long)(x) >= (long long)LONG_MIN) ?                        \
            PyInt_FromLong((long)(x)) :                                  \
            PyLong_FromLongLong((long long)(x)))

#define _cffi_from_c_int(x, type)                                        \
    (((type)-1) > 0 ? /* unsigned */                                     \
        (sizeof(type) < sizeof(long) ?                                   \
            PyInt_FromLong((long)x) :                                    \
         sizeof(type) == sizeof(long) ?                                  \
            PyLong_FromUnsignedLong((unsigned long)x) :                  \
            PyLong_FromUnsignedLongLong((unsigned long long)x)) :        \
        (sizeof(type) <= sizeof(long) ?                                  \
            PyInt_FromLong((long)x) :                                    \
            PyLong_FromLongLong((long long)x)))

#define _cffi_to_c_int(o, type)                                          \
    ((type)(                                                             \
     sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o)        \
                                         : (type)_cffi_to_c_i8(o)) :     \
     sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o)       \
                                         : (type)_cffi_to_c_i16(o)) :    \
     sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o)       \
                                         : (type)_cffi_to_c_i32(o)) :    \
     sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o)       \
                                         : (type)_cffi_to_c_i64(o)) :    \
     (Py_FatalError("unsupported size for type " #type), (type)0)))

#define _cffi_to_c_i8                                                    \
                 ((int(*)(PyObject *))_cffi_exports[1])
#define _cffi_to_c_u8                                                    \
                 ((int(*)(PyObject *))_cffi_exports[2])
#define _cffi_to_c_i16                                                   \
                 ((int(*)(PyObject *))_cffi_exports[3])
#define _cffi_to_c_u16                                                   \
                 ((int(*)(PyObject *))_cffi_exports[4])
#define _cffi_to_c_i32                                                   \
                 ((int(*)(PyObject *))_cffi_exports[5])
#define _cffi_to_c_u32                                                   \
                 ((unsigned int(*)(PyObject *))_cffi_exports[6])
#define _cffi_to_c_i64                                                   \
                 ((long long(*)(PyObject *))_cffi_exports[7])
#define _cffi_to_c_u64                                                   \
                 ((unsigned long long(*)(PyObject *))_cffi_exports[8])
#define _cffi_to_c_char                                                  \
                 ((int(*)(PyObject *))_cffi_exports[9])
#define _cffi_from_c_pointer                                             \
    ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[10])
#define _cffi_to_c_pointer                                               \
    ((char *(*)(PyObject *, CTypeDescrObject *))_cffi_exports[11])
#define _cffi_get_struct_layout                                          \
    ((PyObject *(*)(Py_ssize_t[]))_cffi_exports[12])
#define _cffi_restore_errno                                              \
    ((void(*)(void))_cffi_exports[13])
#define _cffi_save_errno                                                 \
    ((void(*)(void))_cffi_exports[14])
#define _cffi_from_c_char                                                \
    ((PyObject *(*)(char))_cffi_exports[15])
#define _cffi_from_c_deref                                               \
    ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[16])
#define _cffi_to_c                                                       \
    ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[17])
#define _cffi_from_c_struct                                              \
    ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[18])
#define _cffi_to_c_wchar_t                                               \
    ((wchar_t(*)(PyObject *))_cffi_exports[19])
#define _cffi_from_c_wchar_t                                             \
    ((PyObject *(*)(wchar_t))_cffi_exports[20])
#define _cffi_to_c_long_double                                           \
    ((long double(*)(PyObject *))_cffi_exports[21])
#define _cffi_to_c__Bool                                                 \
    ((_Bool(*)(PyObject *))_cffi_exports[22])
#define _cffi_prepare_pointer_call_argument                              \
    ((Py_ssize_t(*)(CTypeDescrObject *, PyObject *, char **))_cffi_exports[23])
#define _cffi_convert_array_from_object                                  \
    ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[24])
#define _CFFI_NUM_EXPORTS 25

typedef struct _ctypedescr CTypeDescrObject;

static void *_cffi_exports[_CFFI_NUM_EXPORTS];
static PyObject *_cffi_types, *_cffi_VerificationError;

static int _cffi_setup_custom(PyObject *lib);   /* forward */

static PyObject *_cffi_setup(PyObject *self, PyObject *args)
{
    PyObject *library;
    int was_alive = (_cffi_types != NULL);
    (void)self; /* unused */
    if (!PyArg_ParseTuple(args, "OOO", &_cffi_types, &_cffi_VerificationError,
                                       &library))
        return NULL;
    Py_INCREF(_cffi_types);
    Py_INCREF(_cffi_VerificationError);
    if (_cffi_setup_custom(library) < 0)
        return NULL;
    return PyBool_FromLong(was_alive);
}

static int _cffi_init(void)
{
    PyObject *module, *c_api_object = NULL;

    module = PyImport_ImportModule("_cffi_backend");
    if (module == NULL)
        goto failure;

    c_api_object = PyObject_GetAttrString(module, "_C_API");
    if (c_api_object == NULL)
        goto failure;
    if (!PyCapsule_CheckExact(c_api_object)) {
        PyErr_SetNone(PyExc_ImportError);
        goto failure;
    }
    memcpy(_cffi_exports, PyCapsule_GetPointer(c_api_object, "cffi"),
           _CFFI_NUM_EXPORTS * sizeof(void *));

    Py_DECREF(module);
    Py_DECREF(c_api_object);
    return 0;

  failure:
    Py_XDECREF(module);
    Py_XDECREF(c_api_object);
    return -1;
}

#define _cffi_type(num) ((CTypeDescrObject *)PyList_GET_ITEM(_cffi_types, num))

/**********/
(	   RI   R   R   R    R\   R   RS   R   R/   (    (    (    s/   lib/python2.7/site-packages/cffi/vengine_cpy.pyt   <module>   s      