
pWc           @   s  d  d l  m Z m Z d  d l m Z m Z y d  d l  m Z Wn e k
 r_ d d l Z n Xd d l	 Z	 d d l
 Z
 d d l Z y: e j d k  r d d l Z n d d l Z e j   Z Wn e k
 r d Z n Xe
 j d e
 j e
 j B Z e
 j d e
 j e
 j B Z e
 j d	  Z e
 j d
  Z e
 j d  Z e
 j d  Z d a e
 j d e
 j  Z e
 j d  Z e
 j d  Z e
 j d  Z  e
 j d  Z! e
 j d  Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d e( f d     YZ) d S(   i   (   t   apit   model(   t   COMMON_TYPESt   resolve_common_type(   t
   _pycparseriNi   s   /\*.*?\*/|//([^\n\\]|\\.)*?$s?   ^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$s   =\s*\.\.\.\s*[,}]|\.\.\.\s*\}s   __dotdotdot\d+__$s   \[\s*\.\.\.\s*\]s   \w+|\Ss   -?0?x?[0-9a-f]+[lu]*$s   \b(__stdcall|WINAPI)\bs   [(]\s*(__stdcall|WINAPI)\bs   \b__cdecl\bs9   \bextern\s*"(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.s'   [*]\s*((const|volatile|restrict)\b\s*)+c           C   s   t  d  k r t j   a  n  t  S(   N(   t   _parser_cachet   Nonet	   pycparsert   CParser(    (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _get_parser%   s    c         C   sn  g  } xKt  rSt j |   } | s( Pn  | j |  | j     | j d  d } | j | j    | j   } |  j d |  r | j d  | d 7} n  d } | } x | t |   k  r6|  | } | d k r | d 7} nH | d k r
| d k r Pn  | d 8} n | d k r)| d k r)Pq)n  | d 7} q W|  | | !| |  | }  q	 W| j |   d j	 |  S(   Nt   (t   )t   *i    i   s   ,;=t    (
   t   Truet   _r_star_const_spacet   searcht   appendt   startt   groupt   endt
   startswitht   lent   join(   t   csourcet   partst   matcht   closingt   endpost   levelt   it   c(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _workaround_for_old_pycparser+   s<    	  
c         C   s  g  } xvt  r~t j |   } | s( Pn  | j   d } | j |  | j     d | j d  k rt | j d  n | j d  |  | d k r|  j d |  } | d k  r t j	 d   n  |  j d | d |  d k r t
 d	   n  | j |  | d | ! |  | d }  nV |  j d
 |  } | d k  rHt j	 d   n  | j |  | | d ! |  | d }  | j d  q	 W| j |   d j |  S(   Ni   t   Cs(   void __cffi_extern_python_plus_c_start; s!   void __cffi_extern_python_start; t   {t   }i    s!   'extern "Python" {': no '}' founds7   cannot use { } inside a block 'extern "Python" { ... }'t   ;s   'extern "Python": no ';' founds     void __cffi_extern_python_stop;R   (   R   t   _r_extern_pythonR   R   R   R   R   t   findR    t	   CDefErrort   NotImplementedErrorR   (   R   R   R   R   R   t	   semicolon(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _preprocess_extern_pythonU   s4    	c   	      C   s  t  j d |   }  i  } xK t j |   D]: } | j   \ } } | j d d  j   } | | | <q( Wt j d |   }  t j d k  r t	 |   }  n  t
 j d |   }  t j d |   }  t j d |   }  t |   }  t j d |   }  t t j |    } x t t |   D] \ } } | j   } |  | d k r|  j d	 | | j    } | | k sgt  d
 |  |  | |  | d f }  q|  | | d !d	 k st  d |  |  | |  | d f }  qW|  j d	 d  | f S(   Nt    s   \
R   s   2.14s    volatile volatile const(s    volatile volatile const s   [__dotdotdotarray__]t   =s   ...s   %s,__dotdotdot%d__ %si   s   %s __dotdotdot%d__ %ss    __dotdotdot__ (   t
   _r_commentt   subt	   _r_definet   finditert   groupst   replacet   stripR   t   __version__R    t   _r_stdcall2t   _r_stdcall1t   _r_cdeclR*   t   _r_partial_arrayt   listt   _r_partial_enumt	   enumeratet   reversedR   R&   R   t   AssertionError(	   R   t   macrosR   t	   macronamet
   macrovaluet   matchest   numbert   pt   p2(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _preprocess   s4    c         C   sk  t  t  } | j d  | j d  | j d  | j d  | j d  t    } t } d } d } x t j |   D] } | | k r]| d k r | rZ| j |  | j |  t } qZq]| d k r t } d } q]| d k r | d 7} q]| d k r| d 8} q]| d k rM| rZ| d k rZ| j |  | j |  qZq]| j |  n  | } qx W| S(	   NR$   t   ,R
   R   t   typedefi    R   i   (   t   setR   t   addt   Falset   _r_wordst   findallt   discardR   (   R   t   look_for_wordst
   words_usedt
   is_typedeft   parent   previous_wordt   word(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _common_type_names   s>    		
t   Parserc           B   s  e  Z d    Z d   Z d   Z d   Z e e e d  Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z e d d  Z d   Z d d  Z d e d  Z d d  Z d   Z d e d  Z d   Z e d  Z d   Z d   Z d   Z RS(   c         C   sU   i  |  _  t   |  _ d |  _ t j   |  _ i  |  _ i  |  _ g  |  _	 d  |  _ d  S(   Ni    (   t   _declarationsRH   t   _included_declarationst   _anonymous_countert   weakreft   WeakKeyDictionaryt   _structnode2typet   _optionst   _int_constantst   _recompleteR   t   _uses_new_feature(   t   self(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   __init__   s    					c   
      C   sS  t  |  \ } } t |  } g  } xM t |  j  D]< } | j d  r4 | d } | j |  | j |  q4 q4 W| t |  7} g  | D] } d | ^ q } | j d  | j |  d j |  } t d  k	 r t j
   n  zF y t   j |  } Wn) t j j k
 r'}	 |  j |	 |  n XWd  t d  k	 rEt j   n  X| | | f S(   Ns   typedef i   s   typedef int %s;s   typedef int __dotdotdot__;s   
(   RE   RT   t   sortedRV   R   R   RM   R   t   lockR   t   acquireR	   t   parseR   t   c_parsert
   ParseErrort   convert_pycparser_errort   release(
   R`   R   R>   t   ctnt	   typenamest   namet   typenamet   csourcelinest   astt   e(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _parse   s.    
 c         C   s   d  } t |  } | j d  r d | d k r | d | j d d  !} | j   r t | d  } | j   } d | k o t |  k n r | | d } q q n  | S(   Nt   :i   i
   (   R   t   strR   R&   t   isdigitt   intt
   splitlinesR   (   R`   Rp   R   t   linet   msgt   linenumRn   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _convert_pycparser_error  s    "c         C   s]   |  j  | |  } t |  } | r= d | j   | f } n d | f } t j |   d  S(   Ns   cannot parse "%s"
%ss   parse error
%s(   Rz   Rs   R3   R    R'   (   R`   Rp   R   Rw   Rx   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyRh     s    c         C   sI   |  j  } z/ i | d 6| d 6| d 6|  _  |  j |  Wd  | |  _  Xd  S(   Nt   overridet   packedt	   dllexport(   R\   t   _internal_parse(   R`   R   R{   R|   R}   t   prev_options(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyRe   %  s    	
c   
   
   C   sD  |  j  |  \ } } } |  j |  t | j  } x! | D] } | j d k r; Pq; q; Wyd |  _ x| D]~} t | t j j	  r |  j
 |  qk t | t j j  r| j s t j d |   n  d } t | j j t j j  r| j j j d d k r|  j |  } n t | j t j j  rt | j j t j j  rt | j j j t j j  r| j j j j d g k rt j | j  } n! |  j | j d | j \ } } |  j d | j | d | qk t j d	 |   qk WWnO t j k
 r?} |  j | |  }	 |	 r9| j d d
 |	 f | _ n    n Xd  S(   Nt   __dotdotdot__t   __cffi_extern_python_stops!   typedef does not declare any namei    iRl   s   typedef t   qualss   unrecognized constructs   
    *** Err: %s(   Rq   t   _process_macrost   itert   extRl   t   _inside_extern_pythont
   isinstanceR   t   c_astt   Declt   _parse_declt   TypedefR    R'   t   typet   IdentifierTypet   namest   _get_unknown_typet   PtrDeclt   TypeDeclR   t   unknown_ptr_typet   _get_type_and_qualst   _declaret   FFIErrorRz   t   args(
   R`   R   Ro   R>   t   iteratort   declR   t   realtypeRp   Rx   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR~   /  sD    			 c         C   sP   | |  j  k r? |  j  | | k r& d  St j d | f   n  | |  j  | <d  S(   Ns%   multiple declarations of constant: %s(   R]   R    R   (   R`   t   keyt   val(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _add_constantsY  s    c         C   s   | j    j d  } | j d  } | r7 | d } n  | j d  rs | d k rs | j d  rs d | d } n  t | d  } | r | } n  |  j | |  |  j d | |  d  S(	   Nt   ult   -i   t   0t   0xt   0oi    s   macro (   t   lowert   rstripR   Ru   R   R   (   R`   Rl   t   int_strt   negt   pyvalue(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _add_integer_constanta  s    
c         C   s   x | j    D]| \ } } | j   } t j |  rG |  j | |  q | d k rj |  j d | |  q t j d | | | | f   q Wd  S(   Ns   ...s   macro s   only supports one of the following syntax:
  #define %s ...     (literally dot-dot-dot)
  #define %s NUMBER  (with NUMBER an integer constant, decimal/hex/octal)
got:
  #define %s %s(   t   itemsR3   t   _r_int_literalR   R   R   R    R'   (   R`   R>   R   t   value(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR   p  s    c         C   s~   |  j  | |  } |  j j d  r- d } n6 |  j d k rE d } n |  j d k r] d } n d } |  j | | j |  d  S(   NR}   s   dllexport_python t   __cffi_extern_python_starts   extern_python t!   __cffi_extern_python_plus_c_starts   extern_python_plus_c s	   function (   t   _get_type_pointerR\   t   getR   R   Rl   (   R`   t   tpR   R   t   tag(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _declare_function  s    			c         C   s  | j  } t | t j j  rj |  j | d | j \ } } t | t j  sT t	  |  j
 | | |  net | t j j  r |  j d |  nn t | t j j  r |  j d |  nF t | t j j  r |  j d |  n | j s t j d |   n  | j r|  j | d t \ } } | j rC|  j
 | | |  q| j   rt | d  rt | j d  rt j | j j  r|  j | j | j j  q| j   r't | j t j j  r'| j j d	 k r't | j j d  r't j | j j j  r'|  j | j d	 | j j j  q| t j k rW| j j d
  rW| j |  _ q|  j d k rxt j d   n  | t j  @r| j! r|  j" d | j | d | q|  j" d | j | d | n  d  S(   NRl   t   structt   uniont   enums'   construct does not declare any variablet   partial_length_okt   initR   R   t   __cffi_extern_python_R   s<   cannot declare constants or variables with 'extern "Python"'s	   constant R   s	   variable (#   R   R   R   R   t   FuncDeclR   Rl   R   t   RawFunctionTypeR=   R   t   Structt   _get_struct_union_enum_typet   Uniont   EnumR    R'   R   t   is_raw_functiont   is_integer_typet   hasattrR   R   R   R   R   t   UnaryOpt   opt   exprt	   void_typeR   R   t   Q_CONSTt   is_array_typeR   (   R`   R   t   nodeR   R   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR     sP    					 c         C   s   |  j  |  d S(   Ni    (   t   parse_type_and_quals(   R`   t   cdecl(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt
   parse_type  s    c         C   s   |  j  d |  d  \ } } | s* t  | j d j j j d } t | t j j	  ru t
 j d | j f   n  |  j | j  S(   Ns   void __dummy(
%s
);i   ii    s   unknown identifier '%s'(   Rq   R=   R   R   R   t   paramsR   R   R   t   IDR    R'   Rl   R   (   R`   R   Ro   R>   t   exprnode(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR     s    i    c         C   s   | |  j  k rl |  j  | \ } } | | k r> | | k r> d  S|  j j d  sl t j d | f   ql n  d | j   k s t  | | f |  j  | <| r |  j j |  n  d  S(   NR{   sP   multiple declarations of %s (for interactive usage, try cdef(xx, override=True))R   (	   RV   R\   R   R    R   t   splitR=   RW   RI   (   R`   Rl   t   objt   includedR   t   prevobjt	   prevquals(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR     s    c         C   s   d } t  | t j j t j j f  r d | j k rF | t j O} n  d | j k re | t j O} n  d | j k r | t j	 O} q n  | S(   Ni    t   constt   volatilet   restrict(
   R   R   R   R   R   R   R   R   t
   Q_VOLATILEt
   Q_RESTRICT(   R`   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   _extract_quals  s    c         C   s   t  | t j  r | j   St  | t j  r | j j d  r | j d j   r | j d  k r | d  k	 r t j
 | | |  St j | |  S(   Nt   $i   (   R   R   R   t   as_function_pointert   StructOrUnionOrEnumRl   R   Rt   t	   forcenameR   t   NamedPointerTypet   PointerType(   R`   R   R   t   declname(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR     s    
%c      
   C   s  t  | t j j  r t  | j t j j  r t | j j  d k r d | j j d |  j k r |  j d | j j d \ } } | |  j	 |  O} | | f St  | t j j
  r| j d  k r d  } n |  j | j d | } |  j | j d | \ } } t j | |  | f St  | t j j  rw|  j | j  \ } } |  j | | d | } |  j	 |  } | | f St  | t j j  r|  j	 |  } | j }	 t  |	 t j j  r4t |	 j  }
 |
 d d g k ri  } xE |
 r'|
 d } | d k r#| j | d  d | | <|
 d =qPqWg  } x> d D]6 } x- t | j | d   D] } | j |  qTWq5W|
 sd g }
 n  |
 d g k rd | k sd	 | k rg  }
 qn  | |
 }
 n  d j |
  } | d k rt j | f S| d k rt j d | j j   n  t |  |  \ } } | | | Bf St  |	 t j j  rh|  j d |	 |  } | | f St  |	 t j j   r|  j d |	 |  } | | f St  |	 t j j!  r|  j d |	 |  } | | f Sn  t  | t j j"  r|  j# | |  d f St  | t j j  r2|  j d | | d t$ d f St  | t j j   rf|  j d | | d t$ d f St j d | j j   d  S(   Ni   s   typedef i    R   R   t   signedt   chart   shortt   longt   unsignedRu   R+   t   voidR   s   :%d: bad usage of "..."R   R   R   t   nesteds(   :%d: bad or unsupported type declaration(   R   s   longR   R   (   R   R   s   long(%   R   R   R   R   R   R   R   R   RV   R   t	   ArrayDeclt   dimR   t   _parse_constantR   R   t	   ArrayTypeR   R   R9   R   t   rangeR   R   R   R    R   t   coordRw   R   R   R   R   R   R   t   _parse_function_typeR   (   R`   t   typenodeRl   R   R   R   t   lengtht   itemtypet	   itemqualsR   R   t   prefixest   newnamest   prefixR   t   identt   tp0t   quals0(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR     s    !
	
		

	

	c      
   C   s  t  t | j d g    } x^ t |  D]P \ } } t | d  s( t j d | pU d | d t | d d  f   q( q( Wt |  d k o t | d	 j	 t
 j j  o t | d	 j	 j	 t
 j j  o | d	 j	 j	 j d
 g k } | r| j   | st j d | pd   qn  g  | D]! } |  j |  j | j	    ^ q!} | rj| t j g k rjg  } n  |  j | j	  \ }	 }
 d  } t | j	 d  r| j	 j d d d d g k rd } qn  t j t |  |	 | |  S(   NR   R   st   %s arg %d: unknown type '%s' (if you meant to use the old C syntax of giving untyped arguments, it is not supported)s   in expressioni   Rl   t   ?i    iR   s=   %s: a function with only '(...)' as argument is not correct CR   iR   R   t	   __stdcall(   R9   t   getattrR   R;   R   R    R'   R   R   R   R   R   R   R   R   t   popt   _as_func_argR   R   R   R   R   R   t   tuple(   R`   R   t   funcnameR   R   t   argt   ellipsist   argdeclnodeR   t   resultR   t   abi(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR   K  s6    	 
+	c         C   sI   t  | t j  r% t j | j |  St  | t j  rA | j   S| Sd  S(   N(   R   R   R   R   t   itemR   R   (   R`   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR   n  s
    
c         C   s]  y |  j  | SWn t k
 r" n X| } | j } | d  k r| | d  k	 rW d | } n |  j d 7_ d |  j } d  } n1 | } d | | f } |  j j | d  \ } }	 | d  k r{| d k r t j | d  d  d   } ny | d k rt j	 | d  d  d   } nR | d k rF| d k r.t
 d	   n  |  j | | j  } n t d
 | f   | d  k	 r|  j | |  qn. | d k r| j d  k	 rt d |   n  | j s| j |  n  | j rd | j k r|  j d | j |  n  | |  j  | <| d k r| S| j d  k r$| S| j d  k	 rIt j
 d |   n  g  }
 g  } g  } g  } x2| j D]'} t | j t j j  rd j | j j  d k r|  j | |  qkn  | j d  k rd } n |  j | j  } t |  _  |  j! | j d t" \ } } |  j  r'|  j | |  n  t | t j  rU| j# rU|  j | |  n  |
 j$ | j pgd  | j$ |  | j$ |  | j$ |  qkWt% |
  | _ t% |  | _& t% |  | _' t% |  | _( | d g t) |  k rt | t j  r| j# rt d | f   qn  |  j* j d  | _+ | j, rYd | _, |  j- j$ |  n  | S(   Ns   $%si   s   $%ds   %s %sR   R   R   R   s!   Enums cannot be declared with ...s	   kind = %rs^   enum %s: the '{}' declaration should appear on the first time the enum is mentioned, not laterR   s   anonymous %ss"   duplicate declaration of struct %sR   iR   s#   %s: using both bitfields and '...;'R|   i    (   NN(.   R[   t   KeyErrorRl   R   RX   RV   R   R   t
   StructTypet	   UnionTypeR'   t   _build_enum_typet   valuesR=   R   R(   R   t   force_the_namet   declst   fldnamesR    R   R   R   R   R   R   R   t   _make_partialt   bitsizeR   RJ   t   _partial_lengthR   R   t   partialR   R   t   fldtypest
   fldbitsizet   fldqualsR   R\   R|   t	   completedR^   (   R`   t   kindR   Rl   R   t
   force_namet   explicit_nameR   R   t   _R  R  R  R  R   R  t   fqual(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR   v  s    	
								c         C   sb   t  | t j  s+ t j d | f   n  | j   rU | rU t d | f   n  t | _ d  S(   Ns   %s cannot be partials   %s is partial but has no C name(	   R   R   t   StructOrUnionR    R'   t
   has_c_nameR(   R   R  (   R`   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR    s
    c         C   s  t  | t j j  r| j } | j d  re | j d  sK | j d  rX t | d  St | d  Sd | d k o d k n r t | d	  S| d d
 k r | d d
 k r t |  d k s t |  d k r | d d k r t | d  St	 j
 d | f   n  t  | t j j  rA| j d k rA|  j | j  St  | t j j  rv| j d k rv|  j | j  St  | t j j  r| j |  j k r|  j | j S| rt  | t j j  r| j d k rt |  _ d Sn  t	 j d | j j   d  S(   NR   R   t   0Xi   i   t   1i    t   9i
   t   'ii   i   i   s   \is   invalid constant %rt   +R   t   __dotdotdotarray__s   ...s?   :%d: unsupported expression: expected a simple numeric constant(   R   R   R   t   ConstantR   R   Ru   R   t   ordR    R'   R   R   R   R   R   Rl   R]   R   R  R   R   Rw   (   R`   R   R   t   s(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR     s8    	  4		c   	      C   s  | d  k	 r t } g  } g  } d } x | j D] } t j | j  rR t } q. n  | j d  k	 rv |  j | j  } n  | j	 | j  | j	 |  |  j
 | j |  | d 7} q. Wt |  } t |  } t j | | |  } | | _ n t j | d d  } | S(   Ni    i   (    (    (   R   RJ   t   enumeratorst   _r_enum_dotdotdotR   Rl   R   R   R   R   R   R   R   t   EnumTypeR  (	   R`   R  R  R  R%  t
   enumvaluest   nextenumvalueR   R   (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR    s*    c         C   s   xy | j  j   D]h \ } \ } } | j d  r7 q n  | j d d  d } | d k r |  j | | d
 t d | q q Wx- | j j   D] \ } } |  j | |  q Wd  S(   Ns   anonymous $enum_$R+   i   i    R   R   R   t	   anonymousRG   R   R   (   s   structs   unions   enumR*  s   typedef(   RV   R   R   R   R   R   R]   R   (   R`   t   otherRl   R   R   R  t   kt   v(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   include1  s    "#c      	   C   s
  | j  j  j } | d d k s% t  t |  d k rG t j | j  S| d  d g k sm | d  d g k r t j | j  } nO x: | d  D]. } | d k r t j	 d | j
 j   q q Wt j | j  } |  j d  k rd d j | d   | j f |  _ n  | S(   NiR   i   t   floatt   doubleRu   R   R   R   R   R   s   :%d: bad usage of "..."s   'typedef %s... %s'R+   (   s   ints   shorts   longs   signeds   unsigneds   char(   R   R   R=   R   R   t   unknown_typeRl   t   UnknownFloatTypeR    R   R   Rw   t   UnknownIntegerTypeR_   R   R   (   R`   R   Rk   R  t   t(    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyR   ;  s"    		#N(   t   __name__t
   __module__Ra   Rq   Rz   Rh   RJ   Re   R~   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R   R  R.  R   (    (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyRU      s2   	
			

	*					2				^#	v	&		
(   i   (*   R   R    R   t   commontypesR   R   R   R   t   ImportErrorRY   t   ret   syst   version_infot   threadt   _threadt   allocate_lockRc   R   t   compilet   DOTALLt	   MULTILINER-   R/   R:   R&  R8   RK   R   t
   IGNORECASER   R6   R5   R7   R%   R   R	   R    R*   RE   RT   t   objectRU   (    (    (    s2   /usr/lib64/python2.7/site-packages/cffi/cparser.pyt   <module>   sF   $
					*	2	3	(