
\c           @   s  d  d l  Z  d  d l Z d d l m Z d d l m Z m Z m Z d Z d Z	 d Z
 d   Z d e f d	     YZ d
 e f d     YZ d e f d     YZ e   Z d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ e e  Z d   Z e e  Z d e f d      YZ d! e f d"     YZ e e d#  d  Z d$ e f d%     YZ  d& e  f d'     YZ! d( e! f d)     YZ" d* e! f d+     YZ# d, e  f d-     YZ$ d d.  Z% d d/  Z& e   Z' e j(   Z) d0   Z* d1   Z+ d2   Z, d3   Z- d S(4   iNi   (   t   allocate_lock(   t	   CDefErrort   VerificationErrort   VerificationMissingi   i   c         C   s[   |  t  @r d | j   } n  |  t @r: d | j   } n  |  t @rW d | j   } n  | S(   Ns    const s
    volatile s    __restrict (   t   Q_CONSTt   lstript
   Q_VOLATILEt
   Q_RESTRICT(   t   qualst   replace_with(    (    s)   lib/python2.7/site-packages/cffi/model.pyt   qualify   s    


t   BaseTypeByIdentityc           B   s_   e  Z e Z e Z d  d d d  Z d   Z d   Z d   Z e d  Z	 d   Z
 d	   Z RS(
   t    s   a C filei    c         C   s   |  j  } | j d  d k s$ t  | j   } | r~ | j d  r^ d | k r^ d | } q~ | d d k r~ d | } q~ n  t | |  } | j d |  } d	 | k r t d
 |  j   | f   n  | S(   Nt   &i   t   *s   &[s   (%s)i    s   [(t    t   $s-   cannot generate '%s' in %s: unknown type name(	   t   c_name_with_markert   countt   AssertionErrort   stript
   startswithR
   t   replaceR   t   _get_c_name(   t   selfR	   t   contextR   t   result(    (    s)   lib/python2.7/site-packages/cffi/model.pyt
   get_c_name   s    	c         C   s   |  j  j d d  S(   NR   R   (   R   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR   /   s    c         C   s   d |  j    k S(   NR   (   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt
   has_c_name2   s    c         C   s   t  S(   N(   t   False(   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   is_integer_type5   s    c         C   sb   y | j  |  } WnJ t k
 r] |  j | |  } | j  j |  |  } | | k s^ t  n X| S(   N(   t   _cached_btypest   KeyErrort   build_backend_typet
   setdefaultR   (   R   t   ffit
   finishlistt	   can_delayt   BTypet   BType2(    (    s)   lib/python2.7/site-packages/cffi/model.pyt   get_cached_btype8   s    c         C   s   d |  j    f S(   Ns   <%s>(   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   __repr__A   s    c         C   s)   g  |  j  D] } | t |  |  f ^ q
 S(   N(   t   _attrs_t   getattr(   R   t   name(    (    s)   lib/python2.7/site-packages/cffi/model.pyt
   _get_itemsD   s    (   t   __name__t
   __module__R   t   is_array_typet   is_raw_functionR   R   R   R   R(   R)   R-   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR      s   					t   BaseTypec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s(   |  j  | j  k o' |  j   | j   k S(   N(   t	   __class__R-   (   R   t   other(    (    s)   lib/python2.7/site-packages/cffi/model.pyt   __eq__J   s    c         C   s   |  | k S(   N(    (   R   R4   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   __ne__N   s    c         C   s   t  |  j t |  j    f  S(   N(   t   hashR3   t   tupleR-   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   __hash__Q   s    (   R.   R/   R5   R6   R9   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR2   H   s   		t   VoidTypec           B   s    e  Z d Z d    Z d   Z RS(   c         C   s   d |  _  d  S(   Ns   void&(   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   __init__X   s    c         C   s   t  |  | d  S(   Nt   new_void_type(   t   global_cache(   R   R#   R$   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR!   [   s    (    (   R.   R/   R*   R;   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR:   U   s   	t   BasePrimitiveTypec           B   s   e  Z d    Z RS(   c         C   s   t  S(   N(   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   is_complex_typeb   s    (   R.   R/   R?   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR>   a   s   t   PrimitiveTypec           B   s  e  Z d> Z i3 d d 6d d 6d d 6d d 6d d 6d d 6d d	 6d d
 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d d# 6d d$ 6d d% 6d d& 6d d' 6d d( 6d d) 6d d* 6d d+ 6d d, 6d d- 6d d. 6d d/ 6d d0 6d d1 6d d2 6d d3 6d d4 6d d5 6d d6 6d d7 6Z d8   Z d9   Z d:   Z d;   Z d<   Z d=   Z	 RS(?   R,   t   ct   chart   it   shortt   intt   longs	   long longs   signed chars   unsigned chars   unsigned shorts   unsigned ints   unsigned longs   unsigned long longt   ft   floatt   doubles   long doublet   js   float _Complexs   double _Complext   _Boolt   wchar_tt   char16_tt   char32_tt   int8_tt   uint8_tt   int16_tt   uint16_tt   int32_tt   uint32_tt   int64_tt   uint64_tt   int_least8_tt   uint_least8_tt   int_least16_tt   uint_least16_tt   int_least32_tt   uint_least32_tt   int_least64_tt   uint_least64_tt   int_fast8_tt   uint_fast8_tt   int_fast16_tt   uint_fast16_tt   int_fast32_tt   uint_fast32_tt   int_fast64_tt   uint_fast64_tt   intptr_tt	   uintptr_tt   intmax_tt	   uintmax_tt	   ptrdiff_tt   size_tt   ssize_tc         C   s/   | |  j  k s t  | |  _ | d |  _ d  S(   NR   (   t   ALL_PRIMITIVE_TYPESR   R,   R   (   R   R,   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;      s    	c         C   s   |  j  |  j d k S(   NRA   (   Rn   R,   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   is_char_type   s    c         C   s   |  j  |  j d k S(   NRC   (   Rn   R,   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR      s    c         C   s   |  j  |  j d k S(   NRG   (   Rn   R,   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   is_float_type   s    c         C   s   |  j  |  j d k S(   NRJ   (   Rn   R,   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR?      s    c         C   s   t  |  | d |  j  S(   Nt   new_primitive_type(   R=   R,   (   R   R#   R$   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR!      s    (   R,   (
   R.   R/   R*   Rn   R;   Ro   R   Rp   R?   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR@   f   sv   
					t   UnknownIntegerTypec           B   s)   e  Z d Z d   Z d   Z d   Z RS(   R,   c         C   s   | |  _  | d |  _ d  S(   NR   (   R,   R   (   R   R,   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;      s    	c         C   s   t  S(   N(   t   True(   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR      s    c         C   s   t  d |  j   d  S(   Ns4   integer type '%s' can only be used after compilation(   t   NotImplementedErrorR,   (   R   R#   R$   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR!      s    (   R,   (   R.   R/   R*   R;   R   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyRr      s   		t   UnknownFloatTypec           B   s    e  Z d Z d   Z d   Z RS(   R,   c         C   s   | |  _  | d |  _ d  S(   NR   (   R,   R   (   R   R,   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;      s    	c         C   s   t  d |  j   d  S(   Ns2   float type '%s' can only be used after compilation(   Rt   R,   (   R   R#   R$   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR!      s    (   R,   (   R.   R/   R*   R;   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyRu      s   	t   BaseFunctionTypec           B   s   e  Z d Z d d  Z RS(   t   argsR   t   ellipsist   abic         C   s   | |  _  | |  _ | |  _ | |  _ g  |  j  D] } | j   ^ q. } |  j r_ | j d  n  | pk d g } |  j d j |  f } | d  k	 r | d  | d | d } n  |  j j	 j
 d |  |  _	 d  S(   Ns   ...t   voids   , i   R   R   (   Rw   R   Rx   Ry   R   t   appendt   _base_patternt   joint   NoneR   R   (   R   Rw   R   Rx   Ry   t   argt   reprargsR	   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;      s    				"	(   Rw   R   Rx   Ry   N(   R.   R/   R*   R~   R;   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyRv      s   t   RawFunctionTypec           B   s&   e  Z d  Z e Z d   Z d   Z RS(   s   (&)(%s)c         C   s   t  d |  f   d  S(   NsP   cannot render the type %r: it is a function type, not a pointer-to-function type(   R   (   R   R#   R$   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR!      s    c         C   s   t  |  j |  j |  j |  j  S(   N(   t   FunctionPtrTypeRw   R   Rx   Ry   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   as_function_pointer   s    (   R.   R/   R|   Rs   R1   R!   R   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR      s   	R   c           B   s    e  Z d  Z d   Z d   Z RS(   s   (*&)(%s)c         C   s   |  j  j | |  } g  } x* |  j D] } | j | j | |   q% Wd } |  j d k r |  j s y | j j f } Wq t k
 r q Xq n  t	 |  | d t
 |  | |  j |  S(   Nt	   __stdcallt   new_function_type(    (   R   R(   Rw   R{   Ry   Rx   t   _backendt   FFI_STDCALLt   AttributeErrorR=   R8   (   R   R#   R$   R   Rw   t   tpt   abi_args(    (    s)   lib/python2.7/site-packages/cffi/model.pyR!      s    	
c         C   s   t  |  j |  j |  j |  j  S(   N(   R   Rw   R   Rx   Ry   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   as_raw_function  s    (   R.   R/   R|   R!   R   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR      s   	t   PointerTypec           B   s#   e  Z d Z d d  Z d   Z RS(   t   totypeR   i    c         C   s\   | |  _  | |  _ t | d  } | j r@ d | j   f } n  | j j d |  |  _ d  S(   Ns    *&s   (%s)R   (   R   R   R
   R0   R   R   R   (   R   R   R   t   extra(    (    s)   lib/python2.7/site-packages/cffi/model.pyR;     s    			c         C   s.   |  j  j | | d t } t |  | d |  S(   NR%   t   new_pointer_type(   R   R(   Rs   R=   (   R   R#   R$   t   BItem(    (    s)   lib/python2.7/site-packages/cffi/model.pyR!     s    (   R   R   (   R.   R/   R*   R;   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s   c         C   s   t  |  t  S(   N(   R   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   ConstPointerType  s    t   NamedPointerTypec           B   s   e  Z d Z d d  Z RS(   R   R,   i    c         C   s-   t  j |  | |  | |  _ | d |  _ d  S(   NR   (   R   R;   R,   R   (   R   R   R,   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;     s    	(   R   R,   (   R.   R/   R*   R;   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s   t	   ArrayTypec           B   s/   e  Z d Z e Z d   Z d   Z d   Z RS(   t   itemt   lengthc         C   se   | |  _  | |  _ | d  k r' d } n | d k r< d } n
 d | } |  j  j j d |  |  _ d  S(   Ns   &[]s   ...s
   &[/*...*/]s   &[%s]R   (   R   R   R~   R   R   (   R   R   R   t   brackets(    (    s)   lib/python2.7/site-packages/cffi/model.pyR;   )  s    				
c         C   s   t  |  j |  S(   N(   R   R   (   R   t	   newlength(    (    s)   lib/python2.7/site-packages/cffi/model.pyt   resolve_length6  s    c         C   sl   |  j  d k r% t d |  f   n  |  j j | |  t |  j  j | |  } t |  | d | |  j   S(   Ns   ...s)   cannot render the type %r: unknown lengtht   new_array_type(   R   R   R   R(   R   R=   (   R   R#   R$   t   BPtrItem(    (    s)   lib/python2.7/site-packages/cffi/model.pyR!   9  s    (   R   R   (   R.   R/   R*   Rs   R0   R;   R   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR   %  s
   		RB   t   StructOrUnionOrEnumc           B   s/   e  Z d Z d Z d   Z d   Z d   Z RS(   R,   c         C   s0   |  j  p d |  j |  j f } | d |  _ d  S(   Ns   %s %sR   (   t	   forcenamet   kindR,   R   (   R   R,   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   build_c_name_with_markerH  s    c         C   s   | |  _  |  j   d  S(   N(   R   R   (   R   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   force_the_nameL  s    	c         C   s#   |  j  j d  s t  |  j  d  S(   NR   i(   R   t   endswithR   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   get_official_nameP  s    (   R,   N(   R.   R/   R*   R~   R   R   R   R   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR   D  s
   		t   StructOrUnionc           B   sz   e  Z d
 Z d  Z e Z d  Z d
 d  Z d   Z	 e
 d  Z d   Z e d  Z d   Z d   Z d   Z d	   Z RS(   i    c         C   s;   | |  _  | |  _ | |  _ | |  _ | |  _ |  j   d  S(   N(   R,   t   fldnamest   fldtypest
   fldbitsizet   fldqualsR   (   R   R,   R   R   R   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;   [  s    					c         c   s_   |  j  d  k	 r[ xI t |  j |  j   D]/ \ } } | d k r% t | t  r% | Vq% q% Wn  d  S(   NR   (   R   R~   t   zipR   t
   isinstanceR   (   R   R,   t   type(    (    s)   lib/python2.7/site-packages/cffi/model.pyt   anonymous_struct_fieldsc  s    "c         c   s   |  j  } | d  k r+ d t |  j  } n  x t |  j |  j |  j |  D]c \ } } } } | d k r t | t  r | r x- | j	   D] } | Vq WqJ | | | | f VqJ Wd  S(   Ni    R   (   i    (
   R   R~   t   lenR   R   R   R   R   R   t
   enumfields(   R   t   expand_anonymous_struct_unionR   R,   R   t   bitsizeR   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR   i  s    	c   	      C   s   g  } g  } g  } g  } xT |  j    D]F \ } } } } | j |  | j |  | j |  | j |  q% Wt |  |  _ t |  |  _ t |  |  _ t |  |  _ d  S(   N(   R   R{   R8   R   R   R   R   (	   R   t   namest   typest   bitsizesR   R,   R   R   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   force_flattenw  s    c         C   s5   t  j |  | | |  } | s1 |  j | |  n  | S(   N(   R   R(   t   finish_backend_type(   R   R#   R$   R%   R&   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR(     s
    	c         C   s  |  j  r5 |  j  d k r1 t d |  j f   n  d  S| j |  } d |  _  |  j d  k r] n|  j d  k rg  |  j D] } | j | |  ^ qv } t t	 |  j
 | |  j   } d } |  j r |  j d k r d } q d |  j f } n  | j j | | |  d d |  ng  } |  j \ } }	 }
 } xt t |  j
   D]y} |	 | } |  j | } t | t  r| j d k r| j j | |  } t | | j |   \ } } | d k r|  j d |  j |  j
 | pd	 f  n  | j |  } |  j |  | f |  j | d |  _ n  | j | |  } t | t  r_| j d  k r_| d k st  nK | j |  } | | k r|  j d
 |  j |  j
 | pd	 | | f  n  | j |  q>Wt t	 |  j
 | |  j |   } | j j | | |  |
 |  d |  _  d  S(   Ni   s(   recursive structure declaration for '%s'i   i   i    is   ...s   field '%s.%s' has a bogus size?s   {}s=   field '%s.%s' is declared as %d bytes, but is really %d bytes(    (   i   (   t	   completedRt   R,   R   R   R~   t   fixedlayoutR(   t   listR   R   R   t   packedR   t   complete_struct_or_uniont   rangeR   R   R   R   R   t   divmodt   sizeoft   _verification_errorR   R   R{   (   R   R#   R$   R&   R   R   t   lstt   extra_flagst   fieldofst	   fieldsizet	   totalsizet   totalalignmentRC   t   fsizet   ftypet	   BItemTypet   nlent   nrestt
   BFieldTypet	   bitemsize(    (    s)   lib/python2.7/site-packages/cffi/model.pyR     sd    		%		
!!
c         C   s   t  |   d  S(   N(   R   (   R   t   msg(    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s    c         C   s1   |  j  r- |  j d  k r- t |  j     n  d  S(   N(   t   partialR   R~   R   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   check_not_partial  s    c         C   s=   |  j    | j |   t |  | d |  j |  j   d |  S(   Ns   new_%s_typet   key(   R   R{   R=   R   R   (   R   R#   R$   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR!     s    
N(   R.   R/   R~   R   R   R   R   R   R;   R   Rs   R   R   R(   R   R   R   R!   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR   U  s   			?		t
   StructTypec           B   s   e  Z d  Z RS(   t   struct(   R.   R/   R   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s   t	   UnionTypec           B   s   e  Z d  Z RS(   t   union(   R.   R/   R   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s   t   EnumTypec           B   sJ   e  Z d  Z e Z e Z d d  Z d   Z d   Z	 d   Z
 d   Z RS(   t   enumc         C   s2   | |  _  | |  _ | |  _ | |  _ |  j   d  S(   N(   R,   t   enumeratorst
   enumvaluest   baseinttypeR   (   R   R,   R   R   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR;     s
    				c         C   sK   t  j |  |  |  j d  k rG |  j   } d | j d d  |  _ n  d  S(   NR   R   t   _(   R   R   R   R~   R   R   (   R   R   R,   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s    c         C   s,   |  j  r( |  j r( t |  j     n  d  S(   N(   R   t   partial_resolvedR   R   (   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s    c      
   C   sJ   |  j    |  j | |  } t |  | d |  j   |  j |  j | d |  S(   Nt   new_enum_typeR   (   R   t   build_baseinttypeR=   R   R   R   (   R   R#   R$   t
   base_btype(    (    s)   lib/python2.7/site-packages/cffi/model.pyR!     s    
	c         C   s  |  j  d  k	 r" |  j  j | |  S|  j rL t |  j  } t |  j  } nO d d  l } y t j   Wn t	 k
 ry n X| j
 d |  j    d } } | d k  r d } t d  } t d  } n d } t d  } t d  } | j | |  }	 | j | |  }
 | j |	  } | j |
  } | d d	 | d >k r\| d d	 | | >k  r\|	 S| d d	 | d >k r| d d	 | | >k  r|
 St d
 |  j     d  S(   NisU   %r has no values explicitly defined; guessing that it is equivalent to 'unsigned int'i    i   RE   RF   s   unsigned ints   unsigned longi   s=   %s values don't all fit into either 'long' or 'unsigned long'(   R   R~   R(   R   t   mint   maxt   warningst   __warningregistry__t   cleart	   NameErrort   warnR   R@   R   R   (   R   R#   R$   t   smallest_valuet   largest_valueR   t   signt
   candidate1t
   candidate2t   btype1t   btype2t   size1t   size2(    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s@    		
N(   R.   R/   R   R   R   R   R~   R;   R   R   R!   R   (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyR     s   			c         C   sH   | d  k r d |  } n  t | d  d  d   } | j |   d | _ | S(   Ns   $%st   unknown_type(   R~   R   R   t   origin(   R,   t
   structnameR   (    (    s)   lib/python2.7/site-packages/cffi/model.pyR   -  s    	c         C   s;   | d  k r d |  } n  t | d  d  d   } t | |   S(   Ns   $$%s(   R~   R   R   (   R,   R   R   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   unknown_ptr_type5  s    c         C   sa   t  |  t j  r t St ? t t |   d  sJ t j   t |   _	 n  t |   j	 SWd  QXd  S(   Nt   __typecache(
   R   R   t
   ModuleTypet   _typecache_cffi_backendt   global_lockt   hasattrR   t   weakreft   WeakValueDictionaryR   (   t   backend(    (    s)   lib/python2.7/site-packages/cffi/model.pyt   get_typecache?  s    c   
      O   s   | j  d | | f  } | s% t  y | j | SWn t k
 rG n Xy t | j |  |   } Wn, t k
 r } t d | |  | f   n X| j } t 2 | j |  }	 |	 d  k r | | | <| S|	 SWd  QXd  S(   NR   s
   %s: %r: %s(
   t   popR   t
   _typecacheR    R+   R   Rt   R   t   getR~   (
   t   srctypeR#   t   funcnameRw   t   kwdsR   t   rest   et   cachet   res1(    (    s)   lib/python2.7/site-packages/cffi/model.pyR=   J  s"    	
c         C   s   t  d |  d |  S(   Nt   ?R   (   R=   (   R#   R&   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   pointer_cachea  s    c         C   sQ   |  j  rM t |  j  d  t k rM d | |  j  d f f |  j  d |  _  n  d  S(   Ni    s   %s: %si   (   Rw   R   t   str(   R   R,   (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   attach_exception_infod  s    "(.   R   R   t   lockR    t   errorR   R   R   R   R   R   R
   t   objectR   R2   R:   t	   void_typeR>   R@   Rr   Ru   Rv   R   R   R   t
   voidp_typeR   t   const_voidp_typeR   R   R~   t   char_array_typeR   R   R   R   R   R   R   R   R   R   R   R=   R  R  (    (    (    s)   lib/python2.7/site-packages/cffi/model.pyt   <module>   sL   	/		L		G				