ó
£áSc        3   @` sà  d  Z  d d l m Z m Z m Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d d l Z d d l m Z d d l Te j a d a d a d a d a d d	 Z d
 Z d
 a d a d Z d a g  Z d a i g  t 6a d a d a  d a! g  a" i  a# d a$ d
 a% d
 a& g  Z' g  a( g  a) g  a* e+ a, d d „ Z- e j. j/ Z0 d d „ Z1 d e _2 i  Z3 x d D] Z4 i d d 6e3 e4 <q†Wx d D] Z4 i d d 6e3 e4 <q¨W[4 i  Z5 i  Z6 xÃ d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF g3 D]" Z7 e7 dG e5 e7 <e7 e6 e7 dG <qrWdH „  Z8 dI „  Z9 dJ „  Z: dK „  Z; dL „  Z< e j= dM e j> ƒ j? Z@ e j= dN e j> ƒ jA ZB e j= dO e j> ƒ jA ZC e j= dP e j> ƒ jA ZD e j= dQ e j> ƒ j? ZE dR „  ZF e- d dS „ ZG dT dU dV ZH dW ZI e j= eH d
 eI eI dX f e j> ƒ dE f ZJ e j= eH d
 eI dY eI dY dX f e j> ƒ ZK e j= eH dZ d[ d[ dX f e j> ƒ d\ f ZL e j= eH d] d^ d^ dX f e j> ƒ d\ f ZM d_ ZN e j= eH d
 eN eN dX f e j> ƒ d\ f ZO eN d` ZP e j= eH d
 eP eP dX f e j> ƒ d\ f ZQ da ZR e j= eH d
 eR eR db f e j> ƒ dc f ZS dd ZT e j= eH de eT eT db f e j> ƒ df f ZU e j= eH d
 dg dg dX f e j> ƒ dg f ZV e j= eH d
 dh dh dX f e j> ƒ di f ZW e j= eH d
 dj dj dX f e j> ƒ dj f ZX e j= eH d
 dk dk dX f e j> ƒ dk f ZY e j= eH d
 dl dl dX f e j> ƒ dl f ZZ e j= eH d
 dm dm dX f e j> ƒ dm f Z[ e j= eH d
 dn dn dX f e j> ƒ dn f Z\ e j= eH d
 do do dX f e j> ƒ do f Z] e j= eH d
 dp dp dq f e j> ƒ dr f Z^ e j= eH d
 ds ds dt f e j> ƒ ds f Z_ e j= eH d
 du du dX f e j> ƒ du f Z` e j= eH d
 dv dv dX f e j> ƒ dv f Za e j= eH d
 dw dw dX f e j> ƒ dw f Zb e j= eH d
 dx dx dX f e j> ƒ dx f Zc e j= eH d
 dy dy dX f e j> ƒ dy f Zd e j= eH d
 dz dz dX f e j> ƒ dz f Ze e j= eH d
 d{ d{ d
 f e j> ƒ d{ f Zf e j= eH d
 d| d| dX f e j> ƒ d| f Zg e j= eH d
 d} d} dX f e j> e jh Bƒ d~ f Zi e j= d e jh ƒ d€ f Zj d� „  Zk e j= d‚ e j> ƒ Zl d dƒ „ Zm d„ „  Zn d… d† „ Zo d‡ „  Zp d dˆ „ Zq e j= d‰ e j> ƒ Zr e j= dŠ e j> ƒ Zs e j= d‹ e j> ƒ Zt e j= dŒ ƒ Zu e j= d� ƒ Zv e j= dŽ e j> ƒ Zw d� „  Zx d� „  Zy d‘ „  Zz d’ „  Z{ d“ „  Z| e j= d” e j> ƒ Z} e j= d• e j> ƒ Z~ e j= d– e j> ƒ Z e j= d— e j> ƒ Z€ e j= d˜ e j> ƒ Z� d™ „  Z‚ dš „  Zƒ d› „  Z„ dœ „  Z… d d� „ Z† d dž „ Z‡ d dŸ „ Zˆ d  d¡ „ Z‰ d¢ „  ZŠ d£ „  Z‹ e+ d¤ „ ZŒ d
 e+ d¥ „ Z� e+ d
 d¦ „ ZŽ d§ „  Z� d¨ „  Z� d
 d© „ Z‘ dª „  Z’ e+ e+ d« „ Z“ e j= d¬ e j> ƒ Z” d­ „  Z• e j= d® ƒ j? Z– d¯ d° „ Z— e j= d± e j> ƒ Z˜ d² „  Z™ d³ „  Zš d´ „  Z› dµ „  Zœ d¶ „  Z� d d d· „ Zž i  d¸ „ ZŸ d¹ „  Z  e j= dº ƒ j? Z¡ d» „  Z¢ d¼ „  Z£ e j= d½ e j> ƒ Z¤ g  d¾ „ Z¥ d¿ „  Z¦ e j= dÀ e j> ƒ Z§ e j= dÁ e j> ƒ Z¨ e j= dÂ e j> ƒ Z© e j= dÃ e j> ƒ Zª e j= dÄ e j> ƒ Z« dÅ „  Z¬ i  dÆ „ Z­ dÇ e® dÈ „ Z¯ d
 dÉ „ Z° d
 dÊ „ Z± dË „  Z² d
 e® dÌ „ Z³ dÍ „  Z´ dÎ „  Zµ e¶ dÏ k rÜg  Z· g  Z¸ d Z¹ d Zº d Z» d Z¼ xûe j½ d D]ìZ¾ e¾ d
 k rfn×e¾ d dÐ k rd Z¹ n¾e¾ dÑ k ršd a d a n£e¾ dÒ k rµdÓ a d a nˆe¾ dÔ k ræt r×e1 dÕ d ƒ n  d a d a nWe¾ dÖ k rûd a nBe¾ d× k rd Z n-e¾ dØ k r+d a d a ne¾ dÙ k rLd a dÚ a d a nñ e¾ dÛ k rad Zº nÜ e¾ dÜ k rvd Z¼ nÇ e¾ dÝ k r‹d Z» n² e¾ d dÞ k r²e0 dß e¿ e¾ ƒ ƒ n‹ eº rÇd Zº e¾ Z nv e» rÜd Z» e¾ a na e¹ r0y! eÀ e¾ ƒ jÁ ƒ  e· jÂ e¾ ƒ Wn' eÃ k
 r,ZÄ e0 dà eÅ eÄ ƒ ƒ n Xn e¸ jÂ e¾ ƒ qQWt oRt oRt ree1 dá d ƒ n  e´ e· e¸ ƒ ZÆ e rÆe1 dâ e¿ e ƒ d ƒ eµ eÆ ƒ ZÇ eÀ e dã ƒ Z¹ e¹ j/ eÇ ƒ e¹ jÁ ƒ  n  e¼ rÙe- eÆ ƒ n  n  d S(ä   sä  
crackfortran --- read fortran (77,90) code and extract declaration information.

Copyright 1999-2004 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/09/27 07:13:49 $
Pearu Peterson


Usage of crackfortran:
======================
Command line keys: -quiet,-verbose,-fix,-f77,-f90,-show,-h <pyffilename>
                   -m <module name for f77 routines>,--ignore-contains
Functions: crackfortran, crack2fortran
The following Fortran statements/constructions are supported
(or will be if needed):
   block data,byte,call,character,common,complex,contains,data,
   dimension,double complex,double precision,end,external,function,
   implicit,integer,intent,interface,intrinsic,
   logical,module,optional,parameter,private,public,
   program,real,(sequence?),subroutine,type,use,virtual,
   include,pythonmodule
Note: 'virtual' is mapped to 'dimension'.
Note: 'implicit integer (z) static (z)' is 'implicit static (z)' (this is minor bug).
Note: code after 'contains' will be ignored until its scope ends.
Note: 'common' statement is extended: dimensions are moved to variable definitions
Note: f2py directive: <commentchar>f2py<line> is read as <line>
Note: pythonmodule is introduced to represent Python module

Usage:
  `postlist=crackfortran(files,funcs)`
  `postlist` contains declaration information read from the list of files `files`.
  `crack2fortran(postlist)` returns a fortran code to be saved to pyf-file

  `postlist` has the following structure:
 *** it is a list of dictionaries containing `blocks':
     B = {'block','body','vars','parent_block'[,'name','prefix','args','result',
          'implicit','externals','interfaced','common','sortvars',
          'commonvars','note']}
     B['block'] = 'interface' | 'function' | 'subroutine' | 'module' |
                  'program' | 'block data' | 'type' | 'pythonmodule'
     B['body'] --- list containing `subblocks' with the same structure as `blocks'
     B['parent_block'] --- dictionary of a parent block:
                             C['body'][<index>]['parent_block'] is C
     B['vars'] --- dictionary of variable definitions
     B['sortvars'] --- dictionary of variable definitions sorted by dependence (independent first)
     B['name'] --- name of the block (not if B['block']=='interface')
     B['prefix'] --- prefix string (only if B['block']=='function')
     B['args'] --- list of argument names if B['block']== 'function' | 'subroutine'
     B['result'] --- name of the return value (only if B['block']=='function')
     B['implicit'] --- dictionary {'a':<variable definition>,'b':...} | None
     B['externals'] --- list of variables being external
     B['interfaced'] --- list of variables being external and defined
     B['common'] --- dictionary of common blocks (list of objects)
     B['commonvars'] --- list of variables used in common blocks (dimensions are moved to variable definitions)
     B['from'] --- string showing the 'parents' of the current block
     B['use'] --- dictionary of modules used in current block:
         {<modulename>:{['only':<0|1>],['map':{<local_name1>:<use_name1>,...}]}}
     B['note'] --- list of LaTeX comments on the block
     B['f2pyenhancements'] --- optional dictionary
          {'threadsafe':'','fortranname':<name>,
           'callstatement':<C-expr>|<multi-line block>,
           'callprotoargument':<C-expr-list>,
           'usercode':<multi-line block>|<list of multi-line blocks>,
           'pymethoddef:<multi-line block>'
           }
     B['entry'] --- dictionary {entryname:argslist,..}
     B['varnames'] --- list of variable names given in the order of reading the
                       Fortran code, useful for derived types.
     B['saved_interface'] --- a string of scanned routine signature, defines explicit interface
 *** Variable definition is a dictionary
     D = B['vars'][<variable name>] =
     {'typespec'[,'attrspec','kindselector','charselector','=','typename']}
     D['typespec'] = 'byte' | 'character' | 'complex' | 'double complex' |
                     'double precision' | 'integer' | 'logical' | 'real' | 'type'
     D['attrspec'] --- list of attributes (e.g. 'dimension(<arrayspec>)',
                       'external','intent(in|out|inout|hide|c|callback|cache|aligned4|aligned8|aligned16)',
                       'optional','required', etc)
     K = D['kindselector'] = {['*','kind']} (only if D['typespec'] =
                         'complex' | 'integer' | 'logical' | 'real' )
     C = D['charselector'] = {['*','len','kind']}
                             (only if D['typespec']=='character')
     D['='] --- initialization expression string
     D['typename'] --- name of the type if D['typespec']=='type'
     D['dimension'] --- list of dimension bounds
     D['intent'] --- list of intent specifications
     D['depend'] --- list of variable names on which current variable depends on
     D['check'] --- list of C-expressions; if C-expr returns zero, exception is raised
     D['note'] --- list of LaTeX comments on the variable
 *** Meaning of kind/char selectors (few examples):
     D['typespec>']*K['*']
     D['typespec'](kind=K['kind'])
     character*C['*']
     character(len=C['len'],kind=C['kind'])
     (see also fortran type declaration statement formats below)

Fortran 90 type declaration statement format (F77 is subset of F90)
====================================================================
(Main source: IBM XL Fortran 5.1 Language Reference Manual)
type declaration = <typespec> [[<attrspec>]::] <entitydecl>
<typespec> = byte                          |
             character[<charselector>]     |
             complex[<kindselector>]       |
             double complex                |
             double precision              |
             integer[<kindselector>]       |
             logical[<kindselector>]       |
             real[<kindselector>]          |
             type(<typename>)
<charselector> = * <charlen>               |
             ([len=]<len>[,[kind=]<kind>]) |
             (kind=<kind>[,len=<len>])
<kindselector> = * <intlen>                |
             ([kind=]<kind>)
<attrspec> = comma separated list of attributes.
             Only the following attributes are used in
             building up the interface:
                external
                (parameter --- affects '=' key)
                optional
                intent
             Other attributes are ignored.
<intentspec> = in | out | inout
<arrayspec> = comma separated list of dimension bounds.
<entitydecl> = <name> [[*<charlen>][(<arrayspec>)] | [(<arrayspec>)]*<charlen>]
                      [/<init_expr>/ | =<init_expr>] [,<entitydecl>]

In addition, the following attributes are used: check,depend,note

TODO:
    * Apply 'parameter' attribute (e.g. 'integer parameter :: i=2' 'real x(i)'
                                   -> 'real x(2)')
    The above may be solved by creating appropriate preprocessor program, for example.

i    (   t   divisiont   absolute_importt   print_functionNi   (   t   __version__(   t   *t   fixi   t    t    iÿÿÿÿc         C` s   t  j  |  ƒ d  S(   N(   t   pprint(   t   ot   f(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   showÀ   s    c         C` s@   t  s
 d  St s< | r) t j j t ƒ n  t j j |  ƒ n  d  S(   N(   t   verboset   quiett   syst   stdoutt   writet   filepositiontext(   t   linet   flag(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   outmessÂ   s      i2   s   abcdefghopqrstuvwxyz$_t   realt   typespect   ijklmnt   integert   intt   doublet   floatt   chart   shortt   longt   voidt   caset   whilet   returnt   signedt   unsignedt   ift   fort   typedeft   sizeoft   uniont   structt   statict   registert   newt   breakt   dot   gotot   switcht   continuet   elset   inlinet   externt   deletet   constt   autot   lent   rankt   shapet   indext   slent   sizet   _it   maxt   mint   flent   fshapet   stringt   complex_doublet   float_doublet   stdint   stderrR   t   typet   defaultt   _bnc         C` s0   |  t  k r, t d |  t  |  f ƒ t  |  S|  S(   Ns&   rmbadname1: Replacing "%s" with "%s".
(   t   badnamest   errmess(   t   name(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt
   rmbadname1Û   s    c         C` s   g  |  D] } t  | ƒ ^ q S(   N(   RO   (   t   namest   _m(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt	   rmbadnameá   s    c         C` s0   |  t  k r, t d |  t  |  f ƒ t  |  S|  S(   Ns+   undo_rmbadname1: Replacing "%s" with "%s".
(   t   invbadnamesRM   (   RN   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   undo_rmbadname1ã   s
    c         C` s   g  |  D] } t  | ƒ ^ q S(   N(   RT   (   RP   RQ   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   undo_rmbadnameê   s    c         C` sS   |  j  d ƒ } | d k r d Sd |  | k r3 d Sd |  | k rG d S|  | d S(   Nt   .iÿÿÿÿR   s   \t   /i   (   t   rfind(   RN   t   i(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   getextensionì   s       s   .*[.](for|ftn|f77|f)\Zs   -[*]-\s*fortran\s*-[*]-s   -[*]-\s*f90\s*-[*]-s   -[*]-\s*fix\s*-[*]-s   [^c*]\s*[^\s\d\t]c         C` sð   d } t  |  d ƒ } | j ƒ  } d } t | ƒ r< d } n t | ƒ rW d } d } n  xˆ | d k rá | rá | d d k rÒ | j ƒ  rÒ | d 8} | d d k r² t | d  ƒ sÅ | d d	 !d
 k rÒ d } PqÒ n  | j ƒ  } qZ W| j ƒ  | S(   s(   Check if file is in free format Fortran.i    t   ri   i   t   !s   	i   iþÿÿÿiÿÿÿÿt   &(   t   opent   readlinet   _has_f_headert   _has_f90_headert   stript   _free_f90_startt   close(   t   filet   resultR
   R   t   n(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   is_free_formatø   s$    		
3
c      	   C` s¿  | s* t  t t t t t t t t f	 } n  |  g  k r: d St } d } d } d } t	 j
 d ƒ } t	 j
 d t	 j ƒ }	 t	 j
 d ƒ }
 t	 j
 d ƒ } t	 j
 d ƒ } | r¹ | d d	 ƒ n  d* \ } } d
 g g  t d ƒ D] } t | ƒ ^ qØ } d a t j |  ƒ } x+t r3| j ƒ  } | s%Pn  | j ƒ  rd a | j ƒ  a d a  | } d a d a t j j t ƒ d } t t ƒ rŸt | ƒ p’t | ƒ rŸd a n" t t ƒ rÁt | ƒ rÁd a n  t rÐt a n t a t d t t ƒ t t rôd p÷d f ƒ n  | j ƒ  j  d d
 ƒ } x. | d k sJ| d	 d k r=Pn  | d	  } qWt sî| j! | ƒ } | rî| j" d ƒ d
 } | j" d ƒ } | d  j# ƒ  d k rë| d+ } | j! | d ƒ } | r×| | j" d ƒ } qè| | d } qëqîn  | j$ ƒ  d k rd } q	n  t d k rÖ| d d, k r^| d d !j# ƒ  d k rRd | d } q†d } q	n( t r†t% | ƒ d k r†| d  } q†n  | d | k r¯t& d t | ƒ ƒ ‚ n  | s¼t rüt% | ƒ d k rü| d d
 k rü| | d  } d } d } qt sž|
 j! | ƒ } | r)| j" d ƒ } n  | rZ| | j! | ƒ j" d ƒ } d } d } n5 d | d } | r}| j# ƒ  } n | } | } | } | d k	 } qd | d } | rÁ| j# ƒ  } n | } | } | } n5t d k rõ| rg| d! k rg| j! | ƒ rg| d" } xG t rW| j ƒ  } | s7t( d# ƒ Pn  | | } | j! | ƒ rPqqW| j) ƒ  } n  |
 j! | ƒ } | rŽ| j" d ƒ } n  | r¿| | j! | ƒ j" d ƒ } d } d } n' | rÔ| j# ƒ  } n | } | } | } | d k	 } n t* d$ t t ƒ ƒ ‚ d% | j+ ƒ  d t | f a |	 j! | ƒ } | r | j" d& ƒ } t j j, | ƒ rwt- | d' | d( d ƒq*t j j. t ƒ g t/ } d } xU | D]M } t j j0 | | ƒ } t j j, | ƒ r�d } t- | d' | d( d ƒPq�q�W| s*t d) t | ƒ t j1 j0 | ƒ f ƒ q*n
 | | ƒ | } q	W| rI| j# ƒ  } n | } | } d% | j+ ƒ  d t | f a |	 j! | ƒ } | rj| j" d& ƒ } t j j, | ƒ rÁt- | d' | d( d ƒqtt j j. t ƒ g t/ } d } xU | D]M } t j j0 | | ƒ } t j j, | ƒ rçd } t- | d' | d( d ƒPqçqçW| stt d) t | ƒ t j1 j0 | ƒ f ƒ qtn
 | | ƒ d a | j2 ƒ  | rš| d d ƒ n! | \	 a  a a a a a a a a d S(-   sõ   
    Read fortran codes from files and
     1) Get rid of comments, line continuations, and empty lines; lower cases.
     2) Call dowithline(line) on every line.
     3) Recursively call itself when statement "include '<filename>'" is met.
    Ni    R   sS   (?P<line>([^"]*["][^"]*["][^"!]*|[^\']*\'[^\']*\'[^\'!]*|[^!\'"]*))!{1}(?P<rest>.*)s*   \s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")s   (?P<line>.*)&\s*\Zs   (\s*&|)(?P<line>.*)s   .*?'''iÿÿÿÿR   i
   i   R   t   frees   	Reading file %s (format:%s%s)
s   ,stricts    s   
R   t   resti   t   f2pyR   t   cR\   t   Ct   #i   s        iH   sx   readfortrancode: Found non-(space,digit) char in the first column.
	Are you sure that this code is in fix form?
	line=%si   s   .pyfs   
s.   Unexpected end of file when reading multiline
s6   Flag sourcecodeform must be either 'fix' or 'free': %ss   Line #%d in %s:"%s"
	RN   t
   dowithlinet   istopsA   readfortrancode: could not find include file %s in %s. Ignoring.
(   R   R   s       (   R   Rl   R\   Rm   Rn   (3   t   gotnextfileR   t   currentfilenamet   sourcecodeformt	   strictf77t   beginpatternR   R   t   dolowercaset   ret   compilet   It   ranget   strt	   fileinputt	   FileInputt   TrueR_   t   isfirstlinet   filenamet   ost   patht   splitextt	   is_f_fileRa   t   _has_fix_headerRh   t   beginpattern77t   beginpattern90R   t   reprt
   expandtabst   replacet   matcht   groupt   lowerRb   R9   t	   Exceptiont   NoneRM   t   rstript
   ValueErrort
   filelinenot   isfilet   readfortrancodet   dirnamet   include_pathst   joint   pathsepRd   (   t   ffileRo   Rp   t   saveglobalst   localdolowercaset   contt	   finallinet   llt   commentlinet   includelinet   cont1t   cont2t
   mline_markt   l1RQ   t   spacedigitst   fint   lt   extR[   t   rlt   origfinallinet   lct   mt   fnt   include_dirst	   foundfilet   inc_dirt   fn1(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR”     sR   	  ,	 		 	 
  0	 	  	"
	

 	 ,

,

 s"   \s*(?P<before>%s(?=\s*(\b(%s)\b)))s   \s*(?P<this>(\b(%s)\b))s   \s*(?P<after>%s)\s*\Zsq   character|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|bytes   .*s   |static|automatic|undefineds   ([a-z]+[\w\s(=*+-/)]*?|)t   functiont   begins	   [a-z\s]*?t
   subroutines   program|block\s*datas?   |module(?!\s*procedure)|python\s*module|interface|type(?!\s*\()sB   end|endprogram|endblockdata|endmodule|endpythonmodule|endinterfaces   [\w\s]*t   ends>   (end\s*(if|do|where|select|while|forall))|(module\s*procedure)s   [\w]*?t   endift   implicits   dimension|virtualt	   dimensiont   externalt   optionalt   requiredt   publict   privatet   intrisics   intent|depend|note|checks   \s*\(.*?\).*t   intentt	   parameters   \s*\(.*t   datat   callt   entryt   callfunt   commont   uset   containst   formatsK   threadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddeft   f2pyenhancementss2   \s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\Zt	   multilinec         C` sc   g  } xM t  |  ƒ j d ƒ D]6 } x  d D] } | j | d ƒ } q) W| j | ƒ q Wd j | ƒ S(   Ns   @,@s   (),t   _t   ,(   t   markoutercommat   splitRŠ   t   appendR—   (   t   argslinet   aRg   R[   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _simplifyargs÷  s    s&   \s*(?P<result>\b[a-z]+[\w]*\b)\s*[=].*c         C` sÃ  d |  k r| t  d j |  ƒ p/ t d j |  ƒ r| xB |  j d ƒ D]1 } | d k sg t t | ƒ ƒ ‚ t | | ƒ qC Wd S| d k  rý d a i d t 6a i i  t 6a	 i g  t 6a
 g  t	 t d <i  t	 t d <d t	 t d <d t	 t d <d	 a d	 a d S| d k rRd } t r*t t k r*d
 } n  x~ t | k rªt d t t ƒ t t ƒ f ƒ t d ƒ t
 t d j t	 t ƒ t
 t t
 t d d	 d <t
 t =t d a q-Wt rNt t k rNt
 t d j t	 t ƒ t
 t t
 t d d	 d <t
 t =t d a t
 t d j t	 t ƒ t
 t t
 t d d	 d <t
 t =t d a d	 a n  d S|  d k rbd Sd } x€ t t t t t t t t t t t t t t t t t  t! t" t# t$ t% t& t  t g D]- } | d j |  ƒ } | rÝPn  | d } qºW| s�t' } d t k ot k n rd Sd t	 t k rUx+t	 t d D]} | t( k rUt( | } n  d t	 t k r| t	 t d k rq6n  t) j d | t* |  ƒ t) j+ ƒ }	 |	 r6| j |	 j, d ƒ ƒ }
 t- |	 j, d ƒ ƒ } |
 rùd | | |
 j, d ƒ f }  n d | | f }  t. d j |  ƒ } | s:t d t |  ƒ ƒ d St/ | d |  ƒ d Sq6Wn  t0 d k s‚t0 d k r™t1 j2 ƒ  j3 d ƒ r™d a5 t d t ƒ n  d S| d d k rØd t k oÄt k  n ræt d a t t k ræd Sn  t d k rt6 d t ƒ ‚ n  t d j |  ƒ }	 |	 rm|	 j, d ƒ t t k rmt6 d t |	 j, d ƒ ƒ t t t ƒ t7 f ƒ ‚ n  t t k r‚d	 a n  t
 t d j t	 t ƒ t
 t t
 t d d	 d <t
 t =t d a t8 s¿d a9 q¿nç | d d k r5d t k oÿt k n rt d a d Sd a: t/ | | d |  ƒ d a9 nŠ | d d k rHnw | d d  k r‹t; rbd Sd t k oyt k n r‚d St a n4 d t k o¢t k n r«d St/ | | d |  ƒ d S(!   s«   
    reset=-1  --- initialize
    reset=0   --- crack the line
    reset=1   --- final check if mismatch of blocks occured

    Cracked data is saved in grouplist[0].
    t   ;i    NR   t   bodyt   varst   blockRN   iÿÿÿÿi   s(   crackline: groupcounter=%s groupname=%s
sY   crackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.
i   t	   externalst
   interfaceds5   (?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Zt   beforet   argss   callfun %s(%s) result (%s)Rf   s   callfun %s(%s)s8   crackline: could not resolve function call for line=%s.
RÄ   s   .pyfs"   crackline:%d: No pattern for line
Rµ   s>   crackline: groupcounter(=%s) is nonpositive. Check the blocks.t   thissG   crackline: End group %s does not match with previous Begin group %s
	%sR³   R¶   RÇ   (<   t   f2pyenhancementspatternR‹   t   multilinepatternRÎ   t   AssertionErrorRˆ   t	   cracklinet   groupcountert	   groupnamet
   groupcachet	   grouplistt   neededmodulet   skipblocksuntilt   f77modulenameR   RÏ   t   dimensionpatternt   externalpatternt   intentpatternt   optionalpatternt   requiredpatternt   parameterpatternt   datapatternt   publicpatternt   privatepatternt   intrisicpatternt   endifpatternt
   endpatternt   formatpatternRu   t   functionpatternt   subroutinepatternt   implicitpatternt   typespatternt   commonpatternt   callpatternt
   usepatternt   containspatternt   entrypatternt   crackline_re_1RS   Rw   t   markouterparenRy   RŒ   RÒ   t   callfunpatternt   analyzelineR   Rr   R�   t   endswithR�   t   previous_contextRŽ   R   t   skipemptyendst   expectbeginRq   t   ignorecontains(   R   t   resetR§   t   flR   t   patR¬   t   re_1RN   t   m1t   m2RÑ   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRß      sú     	 


	 			 $"-
  	

	  	 c         C` s•   d } d } x‚ |  D]z } | d k rN | d } | d k rƒ | d } q qƒ n5 | d k rƒ | d } | d k rƒ | d } q qƒ n  | | } q W| S(   NR   i    t   (i   s   @(@t   )s   @)@(    (   R   R§   R
   Rl   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRþ   ‡  s     
 
 	
 
 	RÌ   c         C` s#  d } d } d } xå |  D]Ý } | s2 | d k rQ | d k rQ | d } d } n› | rŽ | d k rŽ | s{ | d d k rŽ | d } d } n^ | | k r¼ | d } | d k rì d } qì n0 | | k rì | d k rì | d	 | d	 } q n  | | } q W| st  t | |  | | f ƒ ƒ ‚ | S(
   NR   i    R  R  i   s   'iÿÿÿÿs   \t   @(   RÞ   Rˆ   (   R   t   commaR§   R
   t   ccRl   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÍ   ’  s(     
	*
	
%c         C` s"   |  j  d d ƒ j  d d ƒ } | S(   Ns   @(@R  s   @)@R  (   RŠ   (   R   R[   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   unmarkouterparen¦  s    c         C` sp  |  s i  }  n  | s |  S|  | k r) |  Sx@t  | j ƒ  ƒ D],} | d k rt | s` | |  k rh| | |  | <qhq< | d k rª xå | | D] } t |  | | ƒ }  q‹ Wq< | d k rÏ t |  | | | ƒ }  q< | d k rô t |  | | | ƒ }  q< | d k r&| s| |  k rh| | |  | <qhq< | d k r5q< | d k rRt d | ƒ q< t d t | ƒ ƒ ‚ q< W|  S(   NR   t   attrspect   kindselectort   charselectort   =t   typenamet   noteR¿   t   checkR¸   Rº   R»   s"   appenddecl: "%s" not implemented.
s,   appenddecl: Unknown variable definition key:(   R  s   typename(   s   intents   checkR¸   s   optionalR»   (   t   listt   keyst   setattrspect   setkindselectort   setcharselectorRM   RŽ   R{   (   t   declt   decl2t   forcet   kR§   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt
   appenddecl©  s6     	  sF   \s*(?P<this>(@\(@.*?@\)@|[*][\d*]+|[*]\s*@\(@.*?@\)@|))(?P<after>.*)\Zsž   \s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>.*)\s*@\)@))*\s*\Zs9   \s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Zs4   ([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)sA   ([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))s   intent\s*\(.*?\bcallback\bc         C` s4   x- |  j  d g  ƒ D] } t j | ƒ r d Sq Wd S(   NR  i   i    (   t   gett   _intentcallbackpatternR‹   (   t   vdeclRÑ   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _is_intent_callbackË  s    c         C` sœ   t  |  ƒ }  t j |  ƒ } | rU | j d ƒ | j d ƒ | j d ƒ | j d ƒ f St j |  ƒ } | rŒ | j d ƒ | j d ƒ d  d  f Sd  g  d  d  f S(   NRN   RÚ   Rf   t   bind(   Rþ   t   nameargspatternR‹   RŒ   t   callnameargspatternR�   (   R   R
  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _resolvenameargspatternÑ  s    4"c   =   
   C` sx  |  j  d ƒ } | d k r$ d  a n  t ró | dw k ró t ró t d k  ró t j j t	 ƒ j
 d ƒ d	 } t d
 | ƒ d	 a t d a d t t <i  t t <g  t t <g  t t d <i  t t d <d t t d <| t t d <d t t d <d	 a n  | dx k r	| j ƒ  } t j d | t j ƒ r,d } n  t j d | t j ƒ rMd } n  t |  j  d ƒ ƒ \ } } } } | d  k r±| d k r�d } n d } | dy k r±t d ƒ q±n  | | t f a | rýt g  t | ƒ j
 d ƒ D] }	 |	 j ƒ  ^ qßƒ } n g  } d | k r<x d | k r.| j d ƒ qWt d ƒ n  d	 }
 d	 } | dz k râd } d t t k rnd  S| t t d k r†d  Sx& t t D] } | d | k r‘d  Sq‘W| t t d k rÇd  Si d d 6d  d 6| } n  t r(t d! k r(t d k r(t d" a d }
 | d k r(d } q(n  t d a i  t t <g  t t <|
 rÿt d k rrt d# t t ƒ d	 ƒ n  d$ t t <d t t d <t t t d <d t t d <g  t t d <g  t t d% <g  t t d <i  t t d <t d a i  t t <g  t t <n  | rÔt d k r%t d& t d	 ƒ n  d t t <d t t d <d' t t d <d( t t d d t t d d f t t d <g  t t d <g  t t d% <g  t t d <i  t t d <t d a i  t t <g  t t <n  | t t <| t t d <| sÿd) | } n  |  j  d* ƒ t t d+ <t | ƒ t t d <| t t d, <t d k rUt	 t t d <ni t rŽt d- k rŽd( t t d d t	 f t t d <n0 d( t t d d t t d d f t t d <x: t t t j ƒ  ƒ D]" } t t | sÕt t | =qÕqÕW| t t d <g  t t d <g  t t d% <g  t t d <i  t t d <i  t t d. <| d k rlg  t t d/ <n  | d{ k r| t t d" d% k r¬t t d" d% j  | ƒ n  t! j" t t d" d ƒ t t d <y0 t t d | t t d | d0 j# d1 ƒ =WqqXn  | d| k rõy; t$ t t d | t t d" d d ƒ t t d | <Wn n X| d k rË| rË| t t d k rË| | k sÈt$ t t d | t t d | ƒ t t d | <qÈqËn  y t t d" d j  | ƒ WqõqõXn  | d  k rqt% d	 j |  j  d* ƒ d2 | ƒ } | rqt& | j  d ƒ | j  d ƒ ƒ \ } } } } t' | | | | ƒ qqn  | d} k rtt t d j  t t ƒ t t t t d d! d <t t =t d a t t d j  t t ƒ t t t t d d! d <t t =t d a qtni| d. k rÌ	t |  j  d ƒ ƒ \ } } } } | d  k	 rt| r�	t g  t | ƒ j
 d ƒ D] }	 |	 j ƒ  ^ qc	ƒ } n g  } | d  k s¥	t( t | ƒ ƒ ‚ | t t d. | <d. | t f a qtn¨| d k r2
t& | |  j  d ƒ ƒ \ } } } } t' | | | | ƒ } | d  k	 rtd3 | t f a qtnB| d~ k rŠt t d } |  j  d ƒ j ƒ  } | j) d; ƒ } | d	 k  r0| d5 k r0t* | ƒ j) d< ƒ d" } | | d  d; | | d } | j) d; ƒ } | | d; k r0d t t k r0t d= |  j  d ƒ | |  f ƒ | d> j+ t t d ƒ } q0n  | d	 k  rKd	 } d } n | |  j ƒ  } | | d" } t | ƒ j
 d ƒ } t, | ƒ d k r¸| d	 } t d? d> j+ | d ƒ ƒ n  d  } xšg  t | ƒ j
 d ƒ D] }	 |	 j ƒ  ^ q×D]j} t- j | ƒ } | sM| d k rd } qbt. |  j/ ƒ  ƒ t d@ | t | ƒ f ƒ qín t | j  d ƒ ƒ } | | k r{i  | | <n  | d4 k r�| | j  d ƒ } n  | d5 k r€|  j  d ƒ | } t0 j | ƒ r€| t t d k rlt d k r[dA t t d" d k rt dB ƒ n  | t t d k rit dC | t t d f ƒ t t d j  | ƒ qiqzt1 dD | ƒ q}t1 dE | ƒ q€n  | d€ k r•| } n  d0 | | k r½| | d0 j  | ƒ n | g | | d0 <| d1 k rQt t d d k rþt dF ƒ qín  | t t d k rqín  d% t t k r9g  t t d% <n  t t d% j  | ƒ n  | } qíW| t t d <| d  k	 rtd3 | t f a qtnê| dG k rht t d } |  j  d ƒ j ƒ  d d! !} d  } xpt | ƒ j
 d ƒ D]Y} y2 g  | j
 dH ƒ D] }	 |	 j ƒ  ^ qõ\ } } Wn t dI | | f ƒ qÜn Xt2 | ƒ } t | ƒ } | | k rfi  | | <n  dH | | k r­| | dH | k r­t dJ | | | dH | f ƒ n  t3 | | ƒ } | r–| j4 dK ƒ dL k rSt | ƒ } x[ t5 j6 | ƒ D]J }  t | |  j7 ƒ  |  j8 ƒ  !j ƒ  j9 dM dN ƒ ƒ | |  j7 ƒ  |  j8 ƒ  +qóWd j+ | ƒ } q–| j4 dK ƒ dO k r–| d j ƒ  j9 dM dN ƒ j9 d> dP ƒ } q–n  y t: | i  | ƒ } Wn3 t; t< t= f k
 rá} t1 dQ | | f ƒ qÜn Xt | ƒ | | dH <d0 | | k r| | d0 j  dG ƒ n dG g | | d0 <| } qÜW| t t d <| d  k	 rtd3 | t f a qtn| dR k rK|  j  d ƒ j ƒ  j ƒ  dS k r¦d  t t dR <qt|  j  d ƒ rtdR t t k rÖt t dR }  n i  }  |  d  k rût dT ƒ i  }  n  x9t |  j  d ƒ ƒ j
 d ƒ D]} i  }! t j dU | t j ƒ } | sXt dV | ƒ qn  t> j | j  d ƒ ƒ }" |" sŠt dW | ƒ qn  t& |" j  d ƒ |" j  d ƒ ƒ \ } } } } t? | | ƒ \ }# }$ }% | |! dK <|# |! dX <|$ |! dY <|% |! dZ <x. t |! j ƒ  ƒ D] } |! | s
|! | =q
q
Wxt | j  d ƒ ƒ j
 d ƒ D]è }& d[ |& k r©y2 g  |& j
 d[ ƒ D] }	 |	 j ƒ  ^ ql\ }' }( Wq¹t d\ |& ƒ qGq¹Xn |& j ƒ  }' }( t, |' ƒ t, |( ƒ k oÜd k n sõt d] |& ƒ qGn  x7 t@ tA |' ƒ tA |( ƒ d ƒ D] }) |! |  tB |) ƒ <qWqGWqW|  t t dR <qtn)	| d^ k r]g  } d }* d }+ d	 }, d }- d	 }. x|  j  d ƒ D]}/ |. sÒ|/ d_ k r­|- }- n  |/ d` k rÒ|- rÒ|, d }, q‹qÒn  |/ da k rë|. d }. n |/ db k r|. d }. n  |, d	 k r|* |/ }* q‹|, d k r6|+ |/ }+ q‹|, d" k r‹|* j ƒ  }* |* jC d> ƒ rp|* d j ƒ  }* n  | j  |* |+ g ƒ |/ }* d }+ d	 }, q‹q‹W|, d" k rì|* j ƒ  }* |* jC d> ƒ rÖ|* d j ƒ  }* n  | j  |* |+ g ƒ n  i  }0 d t t k rt t d }0 n  d  } x| D]
}1 g  |1 D] }	 |	 j ƒ  ^ q-}1 |1 d	 d	 d> k rn|1 d	 d |1 d	 <n  |1 d	 d	 da k ršt dc |1 d	 ƒ q n  d	 } d	 }2 t, |1 d ƒ }3 xqt g  t |1 d	 ƒ j
 d ƒ D] }	 |	 j ƒ  ^ qÖƒ D]7} | d	 da k rt dc | ƒ qïn  d	 }- xS | |3 k  rt|- sI|1 d | d> k rt|1 d | d_ k rg|- }- n  | d } q"W| d } | |0 k r˜i  |0 | <n  dH |0 | k rý|0 | dH |1 d |2 | d !k rýt dd | |0 | dH |1 d |2 | d !f ƒ n  |1 d |2 | d !|0 | dH <| }2 | } qïWq W|0 t t d <| d  k	 rtd3 | t f a qtn| de k rc|  j  d ƒ j ƒ  } | d	 d` k s›df | } n  g  }4 d	 }, d }5 d }6 xž | D]– }/ |/ d` k rÜ|, d }, qºn  |, d- k r/|5 j ƒ  }5 |5 sdg }5 n  |4 j  |5 |6 g ƒ |, d" }, d }5 d }6 n  |, d" rF|5 |/ }5 qº|6 |/ }6 qºW|5 j ƒ  }5 |5 sodg }5 n  |4 j  |5 |6 g ƒ i  }7 de t t k r©t t de }7 n  x— |4 D]� }/ |/ d	 |7 k rÖt dh ƒ q°n  g  |7 |/ d	 <xX g  t |/ d ƒ j
 d ƒ D] }	 |	 j ƒ  ^ qD]$ } | r|7 |/ d	 j  | ƒ qqWq°W|7 t t de <de |5 t f a n| di k r3t j dj |  j  d ƒ t j ƒ } | r| j/ ƒ  }8 di t t k rÃi  t t di <n  | j  d ƒ } i  t t di | <d	 }9 dk |8 k r0|8 dk d  k	 r0dl |8 k r+|8 dl d  k r+d }9 n  |9 t t di | dm <g  |8 dk j
 d> ƒ D] }	 |	 j ƒ  ^ qU} i  }: x� | D]’ }1 dH |1 k rìt j dn |1 t j ƒ }" |" rÕ|" j  di ƒ j ƒ  |: |" j  do ƒ j ƒ  <qöt dp t |1 ƒ ƒ n
 |1 |: |1 <|: t t di | dq <qzWq0qtt. |  j/ ƒ  ƒ t dr ƒ nA| d� k ròds t t k r`i  t t ds <n  t t ds }; |  j  d ƒ dt k rÓdt |; k rÓtD |; dt tE ƒ r¶|; dt g |; dt <n  |; dt j  |  j  d ƒ ƒ qt|  j  d ƒ |; |  j  d ƒ <n‚ | d k rKt d  k r!t rt du ƒ n  d  St }< tF t |< t d"  |  j  d ƒ ƒ n) t d k rtt. |  j/ ƒ  ƒ t dv ƒ n  d  S(‚   NRÛ   RÊ   R³   RÂ   RÄ   RI   i   RV   i    sB   analyzeline: no group yet. Creating program group with name "%s".
t   programRÔ   RÕ   RÖ   RN   t   fromskyt   froms   block\s*datas
   block datas   python\s*modules   python modulet   aftert   _BLOCK_DATA_R   t	   interfaces2   analyzeline: No name/args pattern found for line.
s   @,@s<   analyzeline: argument list is malformed (missing argument).
RÚ   RØ   R´   R²   iÿÿÿÿi   s&   analyzeline: Creating module block %s
t   moduleR×   sD   analyzeline: Creating additional interface block (groupcounter=%s).
t   unknown_interfaces   %s:%st   unknown_RÙ   t   prefixRf   i   RÃ   t   varnamesR  R¹   R   t   variableR¸   R¿   Rº   R»   R¼   R½   R¾   s   ::s   @)@s'   All arguments will have attribute %s%s
RÌ   sX   analyzeline: cannot handle multiple attributes without type specification. Ignoring %r.
sE   analyzeline: no name pattern found in %s statement for %s. Skipping.
t   __user__s8   analyzeline: missing __user__ module (could be nothing)
s;   analyzeline: appending intent(callback) %s to %s arguments
s+   analyzeline: intent(callback) %s is ignoreds<   analyzeline: intent(callback) %s is already in argument lists(   analyzeline: ignoring program arguments
RÀ   R  sM   analyzeline: could not extract name,expr in parameter statement "%s" of "%s"
sG   analyzeline: Overwriting the value of parameter "%s" ("%s") with "%s".
R   R   t   dt   et   complexs   +1j*(s1   analyzeline: Failed to evaluate %r. Ignoring: %s
R·   t   nones<   analyzeline: Overwriting earlier "implicit none" statement.
s9   \s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\ZsD   analyzeline: could not extract info of implicit statement part "%s"
sM   analyzeline: could not extract types pattern of implicit statement part "%s"
R  R  R  t   -sZ   analyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement
s^   analyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement (2)
RÁ   t   'RW   R  R  s>   analyzeline: implied-DO list "%s" is not supported. Skipping.
s=   analyzeline: changing init expression of "%s" ("%s") to "%s"
RÅ   s   //t   _BLNK_sD   analyzeline: previously defined common block encountered. Skipping.
RÆ   sT   \A\s*(?P<name>\b[\w]+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\ZR  t   notonlyt   onlys;   \A\s*(?P<local>\b[\w]+\b)\s*=\s*>\s*(?P<use>\b[\w]+\b)\s*\Zt   locals0   analyzeline: Not local=>use pattern found in %s
t   maps0   analyzeline: Could not crack the use statement.
RÉ   t   usercodes-   analyzeline: No context for multiline block.
s+   analyzeline: No code implemented for line.
(   s   begins   calls   callfuns   type(   s   begins   calls   callfun(   s	   interfaces
   block data(   s   calls   callfun(   s   calls   callfun(   s   functionR´   (   s   calls   callfun(   s	   dimensions   intents   optionals   requiredR¹   R¼   s   privateR¾   (   R¼   s   private(   s   optionals   requiredR¼   R¹   s   privateR¾   (   s   f2pyenhancements(G   RŒ   R�   R  R  R  Rà   R�   R‚   t   basenameRr   RÎ   R   Rq   Rá   Râ   Rã   R�   Rw   R‹   Ry   R*  RR   RÍ   Rb   t   removeRæ   Rä   R   Rˆ   RO   R  R  RÏ   t   copyt   deepcopyR<   R"  R÷   t   cracktypespec0t
   updatevarsRÞ   t   findRþ   R—   R9   t   namepatternt   printt	   groupdictR$  RM   t   get_parameterst   determineexprtypeR#  t   real16patternt   finditert   startRµ   RŠ   t   evalt   SyntaxErrort	   NameErrort	   TypeErrort   typespattern4implicitt   cracktypespecRz   t   ordt   chrt
   startswitht
   isinstanceR{   t   appendmultiline(=   R¬   R    R   RÖ   t   newnameRN   RÚ   Rf   R'  t   xt
   needmodulet   needinterfacet   itR!  t   tR   t   selectort   attrt   edeclt	   last_nameRž   RY   t   plt   chR9  R
  t   apt   initexprt   paramst   ttt   vt   msgt   implR  R  t
   kindselectt
   charselectR  R[   t   begct   endcR	   t   dlt   ilR
   t   fct   inpRl   RÕ   R§   t   jt   llent   clt   bnt   olt	   commonkeyt   mmt   isonlyR©   R8  t   gc(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR   Û  s¦   	



	 	 	!	 7







0


 '0# 0  ; <  $-
!7$ !!  	 
5 		

2 %"E
!
	%  -




 % 2 
( &     
 
 	         ?* 

41    
  	
  	
  	
9  !	, +
!
c         C` sQ   d |  k r i  |  d <n  |  d } | | k r< g  | | <n  | | j  | ƒ d  S(   Nt   f2pymultilines(   RÏ   (   RŒ   t   context_namet   mlR8  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR]  ¦  s    
c         C` s5  d  } d  } t j d |  t j ƒ r- d }  n3 t j d |  t j ƒ rN d }  n |  j ƒ  j ƒ  }  t j t | ƒ ƒ } | s‰ t d ƒ d  S| j	 ƒ  } x. t
 | j ƒ  ƒ D] } t | | ƒ | | <q¨ W|  d k ré | d } | d } n  | j d ƒ } | d k r%| |  j ƒ  } | | d } n  |  | | | f S(   Ns   double\s*complexs   double complexs   double\s*precisions   double precisions>   cracktypespec0: no kind/char_selector pattern found for line.
R:  R   t   logicalR   t	   characterRI   RÛ   R.  s   ::i    i   (   s   complexR   R…  s   realR†  s   type(   R�   Rw   R‹   Ry   Rb   R�   t   selectpatternRþ   R   RM  R  R  R  RJ  (   R   Rž   Rd  Re  R
  R8  R!  RY   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRH  ¯  s,     	 	
 
s+   \s*(?P<name>\b[\w]+\b)\s*(?P<after>.*)\s*\ZsC   \s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|[*]\s*(?P<kind2>.*?))\s*\Zs3   \s*(\((?P<lenkind>.*)\)|[*]\s*(?P<charlen>.*))\s*\Zs…   \s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|))\s*\ZsÁ   \s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*[*]\s*(?P<len>.*?)|([*]\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Zc         C` s®   |  j  ƒ  }  t |  ƒ d k r" |  S|  d } xm t d t |  ƒ d ƒ D]R } |  | d k rŠ |  | d d k sF |  | d d k rŠ qF n  | |  | } qF W| |  d } | S(   Ni   i    R   s   ()[]{}=+-/* iÿÿÿÿ(   Rb   R9   Rz   (   t   exprt   expr2RY   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   removespacesÉ  s     
 ( c         C` s  d } d } d } d } d } xß |  D]× } | d k rY | d	 k rY | | } | } q% n  | d k r’ | d
 k r’ | } i d d 6d d 6| } n  | | k r« | d } nA | | k rÄ | d } n( | d k rì | d k rì | d } q% n  | | } | } q% W| S(   NR   i    s   't   "s   \i   R   s   @_@(   s   \s   'R‹  (   s   'R‹  (    (   R   R§   R
   R  t   cc1t   cbRl   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   markinnerspacesÓ  s.     
     
 
 
c      	   C` s©  d  } t |  | ƒ \ } } } | rÛ g  t | ƒ j d ƒ D] } | j ƒ  ^ q: } g  }	 t j d ƒ }
 xh | D]` } | s€ qn n  |
 j | ƒ } | rÁ | j d ƒ j	 ƒ  } | | t
 | ƒ } n  |	 j | ƒ qn W|	 } n  g  t | ƒ j d ƒ D] } | j ƒ  ^ qñ } g  } x{ | D]s } xj g  t t t | ƒ ƒ d d ƒj d ƒ D] } | j ƒ  ^ qGD]( } | r]| j | j d d ƒ ƒ q]q]WqWx| D]} t j | ƒ } | sÉt d t | ƒ ƒ q”n  t | j d	 ƒ ƒ } i  } | t t d
 k r™t t d
 | j ƒ  } d | k } | r/|  | d <n5 |  rd|  | d k rdt d | | d |  f ƒ n  d | k r†t j | ƒ | d <n“ | rxŠ t | j ƒ  ƒ D]s } | | d k r÷| | | d | k r÷t d | | | d | | | f ƒ qŸt j | | ƒ | d | <qŸWn  d | k rU| rU| r>| | d <qèt d | | f ƒ n“ | rèxŠ t | j ƒ  ƒ D]s } | | d k rÆ| | | d | k rÆt d | | | d | | | f ƒ qnt j | | ƒ | d | <qnWn  d | k r| | d <n5 | r6| d | k r6t d | | d | f ƒ n  d | k rXt j | ƒ | d <qï| rïx5 | D]* } | | d k re| d j | ƒ qeqeWqïnV t j |  ƒ | d <t j | ƒ | d <t j | ƒ | d <| | d <t j | ƒ | d <| j d ƒ r0t j t | j d ƒ ƒ ƒ } | r| j ƒ  } xK d d d g D]: } | | d d  k	 r>| | d | | <| | d =q>q>WxH t | j ƒ  ƒ D]4 } | | d  k	 r¼t | | ƒ | | <q�| | =q�Wd | k rLd | k rL| d d k r| d | d <| d =qL| d d | d | d <| d =t d |  | |  | | d f ƒ n  d | k rød | d } d | k s}| d r�| g | d <qø| d j | ƒ xW | d D]H } | d  d k r©| | k r©| d d  =t d! | | | f ƒ Pq©q©Wn  d | k r¯|  d, k rId | k s'| d r4i  | d <n  | d | d d& <q¯|  d' k r¯d | k sl| d ryi  | d <n  d | d k r—| d d =n  | d | d d& <q¯n  d | k r-d( | k rþ| d( | d k rþt d) | | d( | d f ƒ q| d | d( <q-q0t d* | | j d ƒ ƒ n  x. t | j ƒ  ƒ D] } | | sC| | =qCqCW| t t d
 | <d+ t t k r›t t d+ j | ƒ n  | } q”W| S(-   Ns   @,@s   (?P<start>[a-zA-Z]+)RR  R  R   s   @ @s   @_@s;   updatevars: no name pattern found for entity=%s. Skipping.
RN   RÕ   R   sI   updatevars: attempt to change the type of "%s" ("%s") to "%s". Ignoring.
R  sV   updatevars: attempt to change the kindselector "%s" of "%s" ("%s") to "%s". Ignoring.
R  sE   updatevars:%s: attempt to change empty charselector to %r. Ignoring.
sV   updatevars: attempt to change the charselector "%s" of "%s" ("%s") to "%s". Ignoring.
R  sM   updatevars: attempt to change the typename of "%s" ("%s") to "%s". Ignoring.
R  R.  R9   t   arrayt   initt   2R   RÌ   s-   updatevars: "%s %s" is mapped to "%s %s(%s)"
s   dimension(%s)i	   R¸   iÿÿÿÿs5   updatevars:%s: attempt to change %r to %r. Ignoring.
R:  R   R…  R   R   R†  R  sT   updatevars: attempt to change the init expression of "%s" ("%s") to "%s". Ignoring.
s?   updatevars: could not crack entity declaration "%s". Ignoring.
R5  (   s   complexs   integers   logicals   real(   R�   RX  RÍ   RÎ   Rb   Rw   Rx   R‹   RŒ   R�   R9   RÏ   RŠ  RŽ  RŠ   RK  R   Rˆ   RO   Râ   Rà   RF  R  R  RM   t   lenarraypatternRþ   RM  R  (   R   Rd  R  t
   entitydeclRg  Rq  Rr  R  R_  R§   Rl   RÑ   R¬   t   st   elt   el1R9  t   e1t   enameRf  t   not_has_typespecR!  R
  t   d1t   lkt   dmt   dm1(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRI  ã  sò    .	.G $))"))"
   
$!"

c   	      C` s¡  d  } d  } d  } | r”|  d k rÙ t j | ƒ } | sQ t d t | ƒ ƒ d  S| j ƒ  } | d | d <| d =x. t | j ƒ  ƒ D] } | | s… | | =q… q… Wxët | j ƒ  ƒ D] \ } } t	 | ƒ | | <q¶ Wq”|  d k r&t
 j | ƒ } | st d	 t | ƒ ƒ d  S| j ƒ  } | d
 | d <| d
 =| d r¸t j t | d ƒ ƒ } | j ƒ  } xS d d g D]B } | | d r˜| | d | | <n  | | | | <| | d =qoWn  | d =x. t | j ƒ  ƒ D] } | | sÒ| | =qÒqÒWxž t | j ƒ  ƒ D] \ } } t	 | ƒ | | <qWq”|  d k r}t j d | t j ƒ } | rb| j d ƒ } q‘t d t |  | ƒ ƒ q”t d t | ƒ ƒ n  | | | f S(   NR:  R   R…  R   s4   cracktypespec: no kindselector pattern found for %s
t   kind2R   R†  s4   cracktypespec: no charselector pattern found for %s
t   charlent   lenkindR9   t   kindR‘  RI   s   \s*\(\s*(?P<name>\w+)\s*\)RN   s'   cracktypespec: no typename found in %s
s'   cracktypespec: no selector used for %s
(   s   complexs   integers   logicals   real(   R�   R  R‹   R   Rˆ   RM  R  R  t   itemsRO   R  t   lenkindpatternRÍ   Rw   Ry   RŒ   (	   R   Rd  Rq  Rr  R  R!  RY   R   R›  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRX  b  s\    
 

  c         C` s9  |  s i  }  n  | s |  Sd |  k r6 | g |  d <|  S| rP |  d j  | ƒ n  | |  d k rd |  S| d k r” d |  d k r” |  d j  | ƒ n¡ | d k rÄ d |  d k rÄ |  d j  | ƒ nq | d k rô d |  d k rô |  d j  | ƒ nA | d k r$d |  d k r$|  d j  | ƒ n |  d j  | ƒ |  S(   NR  R+   t	   automaticR¼   R½   (   RÏ   (   R  Re  R   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR  �  s*    	  c         C` s   |  s i  }  n  | s |  Sd |  k r3 | |  d <|  SxE t  | j ƒ  ƒ D]1 } | sb | |  d k rF | | |  d | <qF qF W|  S(   NR  (   R  R  (   R  t   selR   R!  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR  ¦  s    	
c         C` s   |  s i  }  n  | s |  Sd |  k r3 | |  d <|  SxE t  | j ƒ  ƒ D]1 } | sb | |  d k rF | | |  d | <qF qF W|  S(   NR  (   R  R  (   R  R¥  R   R!  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR  ³  s    	
t   unknownc         C` s   d |  k r |  d S| S(   NRN   (    (   RÖ   R¦  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   getblocknameÀ  s    c         C` s*   y d |  d |  d f a  Wn n Xd  S(   Ns
   In: %s:%s
R-  RN   (   R   (   RÖ   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   setmesstextÇ  s    c         C` sI   i  } d |  k r% t  |  d ƒ } n  d |  k rE | j |  d ƒ n  | S(   Nt   parent_blockRÆ   (   t   get_usedictt   update(   RÖ   t   usedict(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRª  Î  s    c   	      C` s"  | d  k r i  } n  t |  ƒ } | s+ | Sxð t | j ƒ  ƒ D]Ü \ } } | j ƒ  } | t k r… t d | |  j d ƒ f ƒ q> n  t | } t | ƒ } | s§ q> n  | r¾ t	 d | ƒ n  xY t | j ƒ  ƒ D]E \ } } | | k rt d t
 | ƒ t
 | ƒ f ƒ n  | | | <qÑ Wq> W| S(   Ns0   get_useparameters: no module %s info used by %s
RN   s+   get_useparameters: mapping for %s not impl.sD   get_useparameters: overriding parameter %s with value from module %s(   R�   Rª  R  R¢  R�   t   f90modulevarsR   R#  RN  RM   Rˆ   (	   RÖ   t	   param_mapR¬  t   usenamet   mappingt   mvarsRl  R!  Rn  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   get_useparametersÖ  s,    	
c         C` sŠ  t  s
 |  St |  t ƒ r] g  } x7 |  D]/ } t | d | d d | ƒ} | j | ƒ q& W| St |  ƒ t d | |  d f d ƒ | d  k r� t |  ƒ } n  | d  k	 r8d |  k r8|  d } xv t | j	 ƒ  ƒ D]_ } | | } d | k rÒ | d } d	 | k r1| d	 }	 |	 | k r.| |	 | d	 <q.q1qÒ qÒ Wn  g  }
 x; |  d
 D]/ } t | d | d d | ƒ} |
 j | ƒ qIW|
 |  d
 <|  S(   Nt   tabs   	R®  s   %sBlock: %s
RN   i    RÕ   R  R¡  RÔ   (
   R­  R\  R  t
   postcrack2RÏ   R¨  R   R�   R²  R  (   RÖ   R³  R®  t   rett   gRÕ   Rg   t   varR¡  t   valt   new_bodyt   b(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR´  ñ  s8    





c         C` s‘  t  |  t ƒ r� g  } g  } xg |  D]_ } t | ƒ t | d | d ƒ} d | k rt d | d k rt | j | ƒ q" | j | ƒ q" W| | St |  ƒ t  |  t ƒ rÌ d |  k rÌ t d t |  ƒ ƒ ‚ n  d |  k r|  d d k rt d | |  d f d	 ƒ n  |  d } t	 |  ƒ }  t
 |  ƒ }  t |  ƒ |  d
 <t |  d
 ƒ |  d <d |  k rp|  d rp|  d } n  t |  | d | ƒ|  d <g  } d |  k rá|  d } x? t | j ƒ  ƒ D]" }	 d |	 k r¸| j |	 ƒ q¸q¸Wn i  } d }
 d |  k r|  d }
 n  d |  k rz|  d rzg  } d |  k r;|  d } n  t j |  d
 ƒ } |
 ra|
 d } n d } | | k r³d } x$ d | | f | k rŸ| d } q|Wd | | f } n  i d d 6g  d 6i  d
 6|
 d d 6} x3|  d D]'} | | k rÙg  } d } xÀ |  d D]´ } | d } | d d k rd } xV | d D]J } | d } d | k r>| d | k r>t j | ƒ } | d | =Pq>q>W| rÁ| d sª|  d | =n  | | j | ƒ =PqÁqqW| d j | ƒ qä| | k rät | | ƒ rä| | | d
 | <qäqäW| d
 s#| d rz| |  d <i d d 6| g d 6i  d
 6| d 6|  d d 6} i  | | <t j | ƒ qzn  | r�| |  d <n  |  S(   si   
    TODO:
          function return values
          determine expression types if in argument list
    R³  s   	RN   R7  RÖ   s0   postcrack: Expected block dictionary instead of R2  s   %sBlock: %s
i    RÕ   t   sortvarsRÚ   RÔ   RÆ   R   R×   RØ   t   __user__routinest   unknown__user__routinesi   s   %s_%iR0  t   _user_interfaceiÿÿÿÿs   python module(   R\  R  R¨  t	   postcrackRÏ   t   dictRŽ   R{   R   t   analyzeargst   analyzecommont   analyzevarst   sortvarnamest   analyzebodyR  RF  R<   t
   isexternalt   usermodules(   RÖ   RÚ   R³  t   grett   uretR¶  t	   blocktypet   userisdefinedt   useblockR!  RN   RØ   R±  t   mnameRY   R0  R9  t   edefRy  Rº  t   bbt   mblock(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR¿    sœ    



 &


 
0
c         C` sL  g  } g  } xU t  |  j ƒ  ƒ D]A } d |  | k rS |  | d rS | j | ƒ q | j | ƒ q Wt | ƒ } d } xÏ | rG| d } d } x0 | d D]$ } | |  | d k rš d } Pqš qš W| r| d | g } | d } | | k rDt d d j | ƒ d ƒ | | } PqDqy | j | ƒ | d } t | ƒ } d } qy W| S(   Nt   dependi    i   sT   sortvarnames: failed to compute dependencies because of cyclic dependencies between s   , s   
(   R  R  RÏ   R9   RM   R—   (   RÕ   t   indept   depRn  Rg   RY   R  t   w(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÄ  r  s8    	




c   	      C` s	  t  |  ƒ s |  Sg  } xÁt |  d j ƒ  ƒ D]©} g  } xŒ|  d | D]|} t j d | t j ƒ } | r�g  } | j d ƒ r» g  t | j d ƒ ƒ j d ƒ D] } | j	 ƒ  ^ q  } n  | j d ƒ j	 ƒ  } | |  d k rBd |  d | k r|  d | d j
 d d	 j | ƒ ƒ q~d d	 j | ƒ g |  d | d <n< | rpi d d	 j | ƒ g d 6|  d | <n i  |  d | <| | k r·| j
 | ƒ q·n | } t d
 | | f ƒ | j
 | ƒ qH W| |  d | <q- Wd |  k ró| |  d <n |  d | |  d <|  S(   NRÅ   s2   \A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\Zt   dimss   @,@RN   RÕ   R  s   dimension(%s)RÌ   sN   analyzecommon: failed to extract "<name>[(<dims>)]" from "%s" in common /%s/.
t
   commonvars(   t	   hascommonR  R  Rw   R‹   Ry   RŒ   RÍ   RÎ   Rb   RÏ   R—   RM   (	   RÖ   RÖ  R!  t   comvarsR9  R¬   RÕ  R_  Rg   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÂ  ”  s:     :)%( c         C` sn  t  |  ƒ g  } xW|  d D]K} |  | d <| d d k r¹ | d  k	 r] | d | k r] q n
 | d } | d t k r} q n  t r™ | d t k r™ q n  t | d d d t ƒ| d <n | } t | | d | d ƒ} | d d k r| d rd | k rq qn  | d j d	 d ƒ d k r4t j	 | ƒ q | d d k rY| d t
 | d <n  | j	 | ƒ q W| S(   NRÔ   R©  RÖ   R²   R´   RN   RÚ   s   
R   i   t   as_interfacet   saved_interfaceR³  s   	R0  RÉ   R   t   pythonmoduleR1  RÕ   (   s   functions
   subroutines         (   R¨  R�   t	   skipfuncst	   onlyfuncst   crack2fortrangenR~   R¿  RŠ   RÇ  RÏ   R­  (   RÖ   RÚ   R³  RÔ   Rº  t   as_(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÅ  µ  s0    


 	c         C` sØ   t  |  ƒ t } i  } d |  k rÎ |  d d  k rb d  } t d k rË t d t |  d ƒ ƒ qË qÎ xi t |  d j ƒ  ƒ D]N } |  d | j d ƒ d k r± |  d | | | <qy |  d | d | | <qy Wn  | | f S(	   NR·   i   s6   buildimplicitrules: no implicit rules for routine %s.
RN   R   R+   R¤  (   s   statics	   automatic(	   R¨  t   defaultimplicitrulesR�   R   R   Rˆ   R  R  R#  (   RÖ   t   implicitrulest	   attrrulesR!  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   buildimplicitrulesÓ  s    
c         C` sN   t  |  | | ƒ } t | ƒ t d ƒ t d ƒ g k r: | St d | ƒ ‚ d  S(   Ni    g        s   r=%r(   RS  RI   R‘   (   R9  R¶  R§   R[   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   myevalä  s    $s   \A\b\w+\b\Zc         C` s­  y) t  t |  i  i  ƒ ƒ } d | d  f SWn n Xt j |  ƒ rO d d |  f St |  ƒ } xK| D]C} t | ƒ | k r€ qb n  t j d | d |  ƒ r  qb n  t j d | d t j	 ƒ } | j |  ƒ } | rb yÅ| j |  ƒ } x> | r$d | j
 d ƒ d | j
 d	 ƒ f } | j | ƒ } qç Wt | i  i  ƒ }	 | j |  ƒ } x> | r†d | j
 d ƒ d | j
 d	 ƒ f } | j | ƒ } qIWt | i  i  ƒ |	 }
 | j |  ƒ } x> | rìd | j
 d ƒ d
 | j
 d	 ƒ f } | j | ƒ } q¯Wt | i  i  ƒ } | j |  ƒ } x> | rNd | j
 d ƒ d | j
 d	 ƒ f } | j | ƒ } qWt | i  i  ƒ } |
 d
 |	 | k r–|
 d |	 | k r–|
 |	 | f SWn n XPqb qb Wd S(   Ni    i   s   \w\s*\([^)]*\bs   \bs   (?P<before>.*?)\bs   \b(?P<after>.*)s   %s(%s)%sRÙ   R.  g      à?g      ø?(   NNN(   R   Rä  R�   t   getlincoef_re_1R‹   R9   Rw   t   searchRx   Ry   RŒ   (   R9  t   xsetRl   t   len_eR_  R	  R¬   R
  t   eeRº  RÑ   t   c2(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt
   getlincoefë  sV      	%	%	%	%( s   \A[a-z]\w*\ZR   c         C` s?	  g  } y! | j  t |  d i  i  ƒ ƒ Wn | j  |  d ƒ n Xy! | j  t |  d i  i  ƒ ƒ Wn | j  |  d ƒ n Xt | d t ƒ rù d | d } | d k r¾ t |  d ƒ } qf| d k  râ d |  d | f } qfd |  d | f } nm t | d t ƒ rNd | d } | d k r7d |  d } qfd | |  d f } n d |  d |  d f } y# t t | i  i  ƒ ƒ d  d  f SWn n Xt |  d | ƒ t |  d | ƒ } } d  | d | d g k r2	| d | d f d k rt | d | d d ƒ d  d  f S| d | d d } | d d | d f } | d | | d f } | d d k r| d | k r| d k  r·d	 | d | d | f | d d
 | | d f f S| rñd | d | d | f | d d | | d f f Sd | d | d f | d d | d f Sn  | d d k rï| d | k rï| d k  rƒd	 | d | d | f | d d
 | | d f f S| r¿d | d | d | f | d d | | d f f Sd | d | d f | d d | d f Sn  | d | d k rÐ| d | k rÐ| d | d }	 |	 s>t | ƒ d  d  f S| d k  rxd	 |	 | d | f | d d
 | |	 f f S| rªd |	 | d | f | d d | |	 f f Sd |	 | d f | d d |	 f Sn  | d | d k oïd k n ržt | d ƒ }
 |
 | k r:t |
 ƒ r-t	 d |
 ƒ n  d |
 }
 n  | d k r]d | d |
 f } q/	| d k  r„d | d |
 | f } q/	d | d |
 | f } q2	| d d k r€t | d ƒ } | | k rôt | ƒ rçt	 d | ƒ n  d | } n  | d d k rn1 | d d k r$d | } n d | d | f } | d k rM| } q/	| d k  rmd | | f } q/	d | | f } q2	| d d k r”t | d ƒ } | | k rÖt | ƒ rÉt	 d | ƒ n  d | } n  | d d k ród | } nY | d d k rd | } n< | d d k  r8d | d | f } n d | d | f } | d k ra| } q/	| d k  r�d | | f } q/	d | | f } q2	t | d ƒ } | | k rÚt | ƒ rÍt	 d | ƒ n  d | } n  | d d k r÷d | } nY | d d k rd | } n< | d d k  r<d | d | f } n d | d | f } t | d ƒ } | | k r–t | ƒ r‰t	 d | ƒ n  d | } n  | d d k r©n1 | d d k rÆd | } n d | d | f } | d k rùd | | f } q2	| d k  r	d | | | f } q2	d | | | f } n  | d  d  f S(   Ni    i   s   %s-%ss   %s+%ss   -(%s)s   %s-(%s)s	   %s-(%s)+1i   s   %s * %s - %ss	   +%s)/(%s)s   %s * %s + %ss	   -%s)/(%s)s   %s * %ss   )/(%s)s#   	getarrlen:variable "%s" undefined
s   (%s)s   %s-%s-%ss   %s-%s+%siÿÿÿÿs   -%ss   %s*%ss   +%ss   +%s*%ss   -%s*%ss   %s%ss   %s%s-%ss   %s%s+%s(   i    i    (
   RÏ   Rä  R\  R   R{   Rˆ   R�   Rë  t   _varname_matchR   (   Ru  RÚ   t   start   edlt   p1R8  Rš  t   d2Rº  RÑ   Rl   Rê  t   c1(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt	   getarrlen  sþ     !  !     # '#  6 4.  8 60$  . ,&$     	     	        s   \b[a-z][\w$]*\bc         C` s  |  | k rð | |  j  d g  ƒ } d | |  k r� t | |  ƒ r� xJ t j | |  d ƒ D]. } | | k r[ | | k r[ | j | ƒ q[ q[ Wn  xw | D]Q } xH | j  | g  ƒ pÂ t | | | ƒ D]" } | | k rÃ | j | ƒ qÃ qÃ Wq˜ Wn t d t |  ƒ ƒ g  } | | |  <| S(   NRÑ  R  s,   _get_depend_dict: no dependence info for %s
(   R#  t   isstringt   word_patternt   findallRÏ   t   _get_depend_dictR   Rˆ   (   RN   RÕ   t   depst   wordst   wordRÔ  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRö    s    !
c         C` s=   t  |  j ƒ  ƒ } i  } x | D] } t | |  | ƒ q W| S(   N(   R  R  Rö  (   RÕ   RP   t   depend_dictRg   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _calc_depend_dict’  s
    c         C` sï   t  |  ƒ } g  } x; t | j ƒ  ƒ D]' } | | s% | j | ƒ | | =q% q% Wxy | rË xl t | j ƒ  ƒ D]X \ } } g  | D] } | | k r | ^ q } | sº | j | ƒ | | =ql | | | <ql WqS Wg  | D] } | |  k rÓ | ^ qÓ S(   s   
    (   Rû  R  R  RÏ   R¢  (   RÕ   Rú  RP   RN   t   lstRg   t   new_lst(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   get_sorted_names™  s    
	%
c         C` sR   |  d d k r  |  d d !}  n  t  j |  ƒ r3 d St j |  ƒ rF d Sd |  d S(	   Ni    s   '"i   iÿÿÿÿi   i   s   kind(R  (   RP  R‹   t   real8pattern(   RD   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt
   _kind_func¬  s    c         C` s^   d |  } | d k r d S| d k r* d S| d k r: d S| d k rJ d S| d k rZ d Sd
 S(   Ni
   i   i   i   i   i    i   i?   i€   iÿÿÿÿi   i   l        l            l	                    (    (   R[   R¬   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _selected_int_kind_func¶  s    
     c         C` sr   |  d k  r d S|  d k  r  d St  j ƒ  j ƒ  j d ƒ rN |  d k rn d Sn  |  d k  r^ d S|  d k rn d Sd	 S(
   Ni   i   i   i   t   poweri   i   i
   iÿÿÿÿ(   t   platformt   machineR�   R[  (   t   pR[   t   radix(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _selected_real_kind_funcÀ  s      c         C` s…  t  j  | ƒ } t  j  | ƒ } xH d t f d t f d t f g D]% \ } } | | k r@ | | | <q@ q@ Wg  } xH t |  ƒ D]: } d |  | k r| d |  | d k r| | j | ƒ q| q| Wt j d t j ƒ } t j d t j ƒ }	 t j d t j ƒ }
 x…| D]}} d	 |  | k r[|  | d	 } t	 |  | ƒ ri| j
 ƒ  } x& d d g D] } | j | Œ  } qMWn  | j d | ƒ } |	 j d | ƒ } t |  | ƒ rÃ|
 j | ƒ rÃ| j d ƒ d } n  t |  | ƒ rOt | ƒ } x[ t j | ƒ D]J } t | | j ƒ  | j ƒ  !j
 ƒ  j d d ƒ ƒ | | j ƒ  | j ƒ  +qïWd j | ƒ } n  t |  | ƒ r¡| d d k r¡| d d k r¡t | d d !ƒ j d ƒ } q¡n  y t | | | ƒ | | <Wn7 t k
 rô} | | | <t d | t | ƒ f ƒ n Xt |  | ƒ r/t | | t ƒ r/t  | | ƒ | | <n  | j
 ƒ  } | | k r}| | | | <q}q t! |  | ƒ t d t | ƒ ƒ q W| S(   NR¡  t   selected_int_kindt   selected_real_kindR  RÀ   s    \bkind\s*\(\s*(?P<value>.*)\s*\)s-   \bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)s4   \bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)R  s   .false.t   Falses   .true.R~   s
   kind("\1")s   selected_int_kind(\1)RË   i    R8  R9  R   R  iÿÿÿÿR  i   s   @,@s   get_parameters: got "%s" on %s
s2   get_parameters:parameter %s does not have value?!
(   s   .false.s   False(   s   .true.s   True("   RF  R   R  R  Rþ  RÏ   Rw   Rx   Ry   t	   islogicalR�   RŠ   t   subt	   isintegerR‹   RÎ   t   isdoubleR  RP  RQ  RR  Rµ   R—   t	   iscomplexRÍ   RS  RŽ   R   Rˆ   Ró  R\  R   RZ  RL  (   RÕ   t   global_paramsRl  t   g_paramsRN   t   funct   param_namesRg   t   kind_ret   selected_int_kind_ret   selected_kind_reRn  t   replRm  R¬   R§   Ro  t   nl(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRN  Ï  sb    	$ E "
#c         C` s   |  d k r d St  |  | ƒ S(   Ns   (:)s   (*)R   (   s   (:)s   (*)R   (   t   _eval_scalar(   t   lengthRl  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _eval_length  s    s   \d+_c         C` s’   t  |  ƒ r" |  j d ƒ d }  n  y t t |  i  | ƒ ƒ }  WnM t t f k
 rX |  St k
 r� } t d | |  t | j	 ƒ  ƒ f ƒ n X|  S(   NRË   i    s,   "%s" in evaluating %r (available names: %s)
(
   t   _is_kind_numberRÎ   R{   RS  RU  RT  RŽ   RM   R  R  (   t   valueRl  Ro  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR    s    !c   5   
   C` s8  t  |  ƒ t |  ƒ \ } } t j |  d ƒ } |  d d k r` |  d | k r` i  | |  d <n  d |  d k rý | d =d |  d d k rý |  d d d } xZ t | j ƒ  ƒ D]C } x: d d g D], } | | k rÃ t | | | ƒ | | <qÃ qÃ Wq° Wqý n  g  } |  d	 } x; | D]3 }	 y | |	 | j |	 ƒ Wqt k
 rFqXqWx6 t | j ƒ  ƒ D]" } | | k r^| j | ƒ q^q^Wt | t	 |  ƒ ƒ }
 i  } t
 j d
 ƒ j } xˆ t | j ƒ  ƒ D]t } | | ƒ } | rÄ| | j ƒ  | j ƒ  !} y | | Wq8t k
 r4t
 j d | t
 j ƒ j | | <q8XqÄqÄWx | D]˜} | d t | j ƒ  ƒ k r‡t | | | | d ƒ | | <n  d | | k rºd | | k o¸d | | d k sº| rƒ| d j ƒ  } xà t | | j ƒ  ƒ D]” } | d k r| | | d k rqèn  | | | k r=| | | | | | <qè| d k rèx0 | | | D] } t | | | ƒ | | <qXWqèqèWq·| |  d	 k r·t d t | ƒ |  d f ƒ q·qºn  d | | k r.d | | d k r.| | d d } y t t | i  |
 ƒ ƒ } Wn n X| | | d d <q.n  d | | k r¢d | | d k r¢| | d d } y t t | i  |
 ƒ ƒ } Wn n X| | | d d <q¢n  i  } d | | k r~
| | d } | j ƒ  g  | | d <dO \ } } } } } x4| D],}	 |	 d  d k r*|	 d j ƒ  d d !} n¿ |	 d  d k rT|	 d j ƒ  d d !} n• |	 d  d k r~|	 d j ƒ  d d !} nk |	 d  d k r¨|	 d j ƒ  d d !} nA |	 d  d k rÒ|	 d j ƒ  d d !} n t | | |	 ƒ | | <| r~d | | k rg  | | d <n  xb g  t | ƒ j d  ƒ D] } | j ƒ  ^ q)D]2 } | | | d k r?| | d j | ƒ q?q?Wd  } n  | rê| j d! d" ƒ } | j d# d$ ƒ } d | | k rÌ| g | | d <n | | d j | ƒ d  } n  | d  k	 r‹d | | k rg  | | d <n  xh t g  t | ƒ j d  ƒ D] } | j ƒ  ^ q3ƒ D]2 } | | | d k rL| | d j | ƒ qLqLWd  } n  | d  k	 rúd | | k r¸g  | | d <n  xb g  t | ƒ j d  ƒ D] } | j ƒ  ^ qÑD]2 } | | | d k rç| | d j | ƒ qçqçWd  } qúqúW| r~
d | | k r~
g  | | d <x*t g  t | ƒ j d  ƒ D] } | j ƒ  ^ qjƒ D]ñ} d% } | d& k r¤d& } n  | |
 k rÃt |
 | ƒ } n  xm t |
 j ƒ  ƒ D]Y } t
 j d' | d( | t
 j ƒ } | rÖ| j d) ƒ t |
 | ƒ | j d* ƒ } qÖqÖW| | k rK	| g } n t | d& ƒ j d+ ƒ } t | ƒ d, k r“	d% | k r“	d% g } d% } n  t | ƒ d k rÉ	| d | k rÉ	d- | d g } n  t | ƒ d, k r_
t | t |  d j ƒ  ƒ ƒ \ } } } | d  d. k r 
| d } n  | rC
| d/ d0 k rC
| d/  } n  | r_
| | f | | <q_
n  | | d j | ƒ qƒWq~
n  d | | k r¾t | | ƒ r§
d1 } n d1 } t  | | ƒ r¾d | | k r»| | d } d% | k r§| d% } t! d2 | | d3 j" | | d ƒ | d3 j" | | d | g ƒ f ƒ | | d j | ƒ | | d =d | | k rxg  | | d <n  d4 | | d k rµ| | d j d4 ƒ qµq¸t! d5 | ƒ q»q¾n  d | | k r©d	 |  k r©| |  d	 k r©d | | k }  |  rg  | | d <n  g  | | d <d | | k r¤d }! t | | d ƒ }" x| | d D]E} g  }# d }$ d }% | | k r| | k r®d6 | | d }% }$ | | d } qxW |  d	 D]H }& |& | k rÑq¹n  t
 j d7 |& d8 | t
 j ƒ r¹|# j |& ƒ q¹q¹Wn  | | k rŸd | | k rwxP | | d D]= }' |' d  d k r3|# |' d j ƒ  d d !j d3 ƒ 7}# q3q3Wn  d | | k rŸ|# | | d }# qŸn  |! d }! | | k r8d | | k r8d9 | | k r8| | | d k r8t# t$ t% t& ƒ | | ƒ r8| g | | d <|" d k rFd: |% | | |! |$ f | | d9 <n d; |% | |$ f | | d9 <d rÑd | | k rÑ|" d k r­d< |% | | |! |$ | f g | | d <qÑd= |% | |$ | f g | | d <n  d | | k rõd> g | | d <n  d> | | d k r�d? | | d k r�| | d j d> ƒ q�qX| dP k rX|  r�| | k r}| |# k r—| | d j | ƒ q—qš| | d |# | | d <q�qXqXWnÃ t' | | ƒ rgd- }( d | | k rgd% | | d k rt( | | d d% |
 ƒ }( |( | | d d% <qdd | | d k rdt( | | d d |
 ƒ }( | | d d =|( | | d d% <qdqgn  | | d sƒ| | d =n  |  r©| | d r©| | d =q©n  d9 | | k rCd | | k rÚg  | | d <n  d> | | d k rd? | | d k r| | d j d> ƒ n  d | | k r¦g  | | d <xL t | j) ƒ  ƒ D]8 \ } } | | | d9 ƒ rK| | d j | ƒ qKqKW| | d s¦| | d =q¦n  t* | | ƒ rÛt+ | | d9 |
 ƒ | | d9 <qÛqCqCWxIt | j ƒ  ƒ D]5} | |  d k ròd | | k r-| | d |  d <n  |  d d k r'd@ |  k r{|  d@ | k r{t, | | | |  d@ ƒ | | <n  dA |  k r$|  dA }) d }* d }+ |) j dB d ƒ }, |) |, k }* |, j dC d ƒ }) |) |, k }+ t- d j |) ƒ } | rt. | j dD ƒ | j d* ƒ ƒ \ }- }. } }/ t/ |- |. ƒ \ }0 }1 }2 |- | | d <|0 r•d |0 k r„y t |0 d i  |
 ƒ |0 d <Wq„q„Xn  |0 | | d <n  |1 r¬|1 | | d <n  |2 rÃ|2 | | dE <n  |* rãt | | dB ƒ | | <n  |+ rt | | dC ƒ | | <qq!t dF t |  dA ƒ ƒ q$q'qòqòW|  d dQ k r4dK |  k ret j |  d	 |  dK ƒ }3 n t j |  d	 ƒ }3 xC t | j ƒ  ƒ D]/ } t# t0 t1 ƒ | | ƒ r‹|3 j | ƒ q‹q‹WdL |  k r@|3 j2 t |  dL j ƒ  ƒ ƒ xV t |  dL j ƒ  ƒ D]; } x2 |  dL | D]" } | |3 k r|3 j | ƒ qqWqþWn  |  d d k r„d@ |  k rp|3 j |  d@ ƒ q„|3 j |  d ƒ n  |  d dR k rÒ|  d }4 |4 | k rÒd | |4 k rÒ| |4 d |  d <qÒn  |  d dN k rþ|3 j2 t | j ƒ  ƒ ƒ n  x3 t | j ƒ  ƒ D] } | |3 k r| | =qqWn  | S(S   NRÕ   RÖ   R²   RN   R   R  R¼   R½   RÚ   s   \w[\w\d_$]*s   .*\b%s\bi    R   R¹   t	   undefinedsC   analyzevars: typespec of variable %s is not defined in routine %s.
R  R9   R  R¡  i	   R¸   i   iÿÿÿÿi   R¿   RÑ  i   R  i   R  s   @,@s   \n\ns   

s   \n s   
R   t   :s   (?P<before>.*?)\bs   \b(?P<after>.*)RÙ   R.  s   @:@i   t   1s   1 * iüÿÿÿs   /(1)R;   so   analyzevars: character array "character*%s %s(%s)" is considered as "character %s(%s)"; "intent(c)" is forced.
RÌ   Rl   s'   analyzevars: charselector=%r unhandled.R  s   .*?\bs   \bR  s   %s%s(%s,%s)%ss   %slen(%s)%ss   %s%s(%s,%i)%s==%ss   %slen(%s)%s>=%sRº   R»   Rf   R4  t   puret	   recursiveRÛ   R  s'   analyzevars: prefix (%s) were not used
R1  RÛ  s   python modules
   block dataRÖ  RÃ   R´   RI   (   NNNNN(   R   R  (   s   modules   pythonmodules   python modules
   block data(   s
   subroutines   function(3   R¨  Rã  RF  R  R  R  RÏ   t   KeyErrorRN  R²  Rw   Rx   R‹   RR  Rµ   Ry   R�   R   Rˆ   R{   RS  t   reverseR�   Rb   RÍ   RÎ   RŠ   RR   RŒ   R9   Rò  t
   isintent_ct   isstringarrayRM   R—   t   l_ort   isintent_int   isintent_inoutt   isintent_inplaceRó  R  R¢  t   isscalarR  R"  R÷   RH  RX  t   isintent_callbackt   isintent_auxt   extend(5   RÖ   Rá  Râ  RÕ   t   genRg   R!  t   svarsRÚ   RÑ   Rl  t   dep_matchest
   name_matchRn  R¬   t   ln0R§   t   savelindimsRe  t   dimR¿   RÑ  R  R  R_  Rl   R8  Rí  R  Ru  t   dit   shape_macroR   RY   t   nit   ddepst   adt   pdR[   t   aaR  t   prt   ispuret   isrect   pr1R   Rd  Rf  Rq  Rr  R  t
   neededvarsRN   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÃ    sj   
 (
 +"$ %'
     5		;	5;	 1		# (   	
&,  .
$$'$'		  )"
  -    %
s   \A[a-z]+[\w$]*\Zc         C` sè  |  } t  j |  ƒ } | rñ t | ƒ \ } } t |  | d | ƒ } d } xC |  D]; }	 |	 j ƒ  }	 |	 t j t j k r‚ d }	 n  | |	 } qQ W| d d k r­ | d } n
 | d } | }  x1 |  | d k sà |  | d k rí |  d }  qÀ Wn  |  | k r=d	 }
 x$ |  t |
 ƒ | k r)|
 d	 }
 qW|  t |
 ƒ }  n  | rT| | d |  <n� |  | d k rž| | d k r�| d | | d |  <qži  | d |  <n  d
 | k rä| | d
 | d k rät	 | d |  d ƒ | d |  <n  |  S(   NRÕ   t   e_RË   iÿÿÿÿR9  t   _eRÚ   R[   i   R×   RØ   R¹   (
   t   analyzeargs_re_1R‹   Rã  RO  R�   RD   t   ascii_lowercaset   digitsR{   R  (   RÑ   RÖ   RÚ   t   orig_at	   a_is_exprRá  Râ  t   att   naRl   R!  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt	   expr2name\	  s>     	 
#$"c         C` s‡  t  |  ƒ t |  ƒ \ } } d |  k r5 g  |  d <n  g  } x1 |  d D]% } t | |  | ƒ } | j | ƒ qF W| |  d <d |  k rá xY t |  d j ƒ  ƒ D]> \ } } x/ | D]' } | |  d k r¯ i  |  d | <q¯ q¯ Wqœ Wn  xj |  d D]^ } | d | k rì d |  k rg  |  d <n  | d |  d k rJ|  d j | d ƒ qJqì qì Wd |  k rƒ|  d |  d k rƒi  |  d |  d <n  |  S(   NRÚ   RÃ   RÕ   RÔ   RN   R×   Rf   (   R¨  Rã  RK  RÏ   R  R¢  (   RÖ   Rá  Râ  RÚ   RÑ   R!  t   args1Rº  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÁ  }	  s.    

# s   \A\(.+?[,].+?\)\Zs   \A[+-]?\d+(_(P<name>[\w]+)|)\Zs+   \A[+-]?[\d.]+[\d+-de.]*(_(P<name>[\w]+)|)\Zs
   \A\(.*\)\Zs   \A(?P<name>\w+)\s*\(.*?\)\s*\Zc         C` sw   t  |  t ƒ r i d d 6St  |  t ƒ r4 i d d 6St  |  t ƒ rN i d d 6St  |  t ƒ ra |  St t |  ƒ ƒ ‚ d  S(   NR   R   R   R:  (   R\  R   R   R:  RÀ  RÞ   Rˆ   (   R[   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   _ensure_exprdictœ	  s    c   	      C` sr  |  | k r t  | |  ƒ S|  j ƒ  }  t j |  ƒ r@ i d d 6St j |  ƒ } | r˜ d | j ƒ  k r� | j d ƒ r� t d t |  ƒ ƒ n  i d d 6St	 j |  ƒ } | rð d | j ƒ  k rå | j d ƒ rå t d t |  ƒ ƒ n  i d d 6Sx{ d d d	 d
 g D]g } x^ g  t
 |  d | ƒj d | d ƒ D] } | j ƒ  ^ q0D]  } | | k rFt  | | ƒ SqFWqWi  } t j |  ƒ rŸt |  d d !| | ƒ } n‰ t j |  ƒ } | r(| j d ƒ } t | j d ƒ | | ƒ } | rúd | k rú| d =n  | s(| d | k r%t  | | d ƒ Sq(n  |  d d k rQi d d 6i d	 d	 6d 6S| snt d t |  ƒ ƒ n  | S(   NR:  R   RN   s:   determineexprtype: selected kind types not supported (%s)
R   R   t   +R<  R   RW   R  R  i   iÿÿÿÿR  i    s   '"R†  R  s>   determineexprtype: could not determine expressions (%s) type.
(   RM  Rb   t   determineexprtype_re_1R‹   t   determineexprtype_re_2RM  RŒ   R   Rˆ   t   determineexprtype_re_3RÍ   RÎ   t   determineexprtype_re_4RO  t   determineexprtype_re_5(	   Rˆ  RÕ   t   rulesR¬   t   opR_  R9  Rc  t   rn(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRO  §	  sH    !!C
s   
c         C` s  t  |  ƒ d } t |  t ƒ r˜ xr |  D]j } | rw | d d k rw | d t k rX q& n  t rw | d t k rw q& qw n  | t | | d | ƒ} q& W| Sd } d } d } |  d } | d k rÄ d Sg  }	 d |  k rã |  d } n  d |  k ro|  d	 }
 xD |  d D]8 } t | |  |	 ƒ } t |
 | ƒ s|	 j | ƒ qqW|  d d k sV|	 rod
 d j	 |	 ƒ } qon  d } d |  k rÇxC t |  d j
 ƒ  ƒ D]( } d | | t | |  d | f } q˜Wn  |  j d g  ƒ } | d k rd | k r| j d ƒ n  | r.d | | t d j	 | ƒ | f } n  d } d |  k rZt |  d | t ƒ } n  d } d |  k r†t |  d | t ƒ } n  | d k r›d } n  d } d |  k râd |  d } |  d |	 k râ|	 j |  d ƒ qân  t |  d | t ƒ } t |  |  d	 |	 | t d | ƒ}
 d } d |  k rF| rFd |  d } n  d |  k r¯d } xG t |  d j ƒ  ƒ D]/ \ } } d | | t | d j	 | ƒ f } qoW| | } n  | d k rÐ| d k rÐd } n  d | | | | | | | | | |
 | | | | | f } | S(   NR   RÖ   R²   R´   RN   RÙ  R+  RÚ   RÕ   s   (%s)RÌ   RÉ   s	   %s%s%s %sR¿   t   callbacks   %s%sintent(%s) %sRÆ   RÅ   R2  Rf   s    result (%s)RÔ   R-  s   ! in %sRÃ   s   %s%sentry %s(%s)s
   block dataR/  s%   %s%s%s %s%s%s %s%s%s%s%s%s%send %s %s(   s   functions
   subroutine(   R¨  R\  R  RÜ  RÝ  RÞ  RK  R,  RÏ   R—   R  t   tabcharR#  RE  t   use2fortrant   common2fortrant   vars2fortranR¢  (   RÖ   R³  RÙ  Rµ  R¶  R4  RN   RÚ   RÊ  t   argslRÕ   RÑ   RÉ   R!  t
   intent_lstRÆ   RÅ   Rf   RÔ   t   messt   entry_stmtsRY   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRÞ  Ï	  s†    
	
 
)
 	##$	7c         C` sy   d } xl t  |  j ƒ  ƒ D]X } | d k rN d | | d j |  | ƒ f } q d | | | d j |  | ƒ f } q W| S(   NR   R>  s   %s%scommon %sRÌ   s   %s%scommon /%s/ %s(   R  R  R—   (   RÅ   R³  Rµ  R!  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRZ  
  s    #'c         C` si  d } x\t  |  j ƒ  ƒ D]H} d | | | f } |  | i  k rk | r | d d k r | d  } q q n  d |  | k r– |  | d r– d | } n  d |  | k r>|  | d r>d } x� t  |  | d j ƒ  ƒ D]b } | |  | d | k rd	 | | | f } d } qÕ d
 | | | |  | d | f } d } qÕ Wn  | r | d d k r | d  } q q W| S(   NR   s   %s%suse %s,iÿÿÿÿRÌ   R@  s   %s only:RB  R   s   %s%s%ss
   %s%s%s=>%s(   R  R  (   RÆ   R³  Rµ  R¬   Rl   R!  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyRY  
  s(     ! 	"  c         C` si   |  d } g  } xR | D]J } y t  d | ƒ } Wn t k
 rJ d } n X| r | j | ƒ q q W| S(   NR¿   s   isintent_%s(var)i    (   RS  RU  RÏ   (   R·  Rü  Rµ  R¿   Rl   (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   true_intent_list1
  s    

c         C` s·  t  |  ƒ d } g  } x. | D]& } | |  d k r | j | ƒ q q Wd |  k r¤ xN |  d D]? } | | k r� | | k r� | j | ƒ q� q^ t d | ƒ q^ Wn  d |  k rÄ | j |  d ƒ n  | sx9 t | j ƒ  ƒ D]" } | | k rÝ | j | ƒ qÝ qÝ Wn  xª| D]¢} d | | k r†x` | | d D]M } | | k r2d | | k r2| | | d k r2t d | | f ƒ q2q2Wn  d |  k rw| |  d k rwt | | ƒ rÈd	 | | | f } n  d
 | | | f } t | | ƒ rd | | | f } n  | | k r#d | | k r#qn  d }	 x< |  d D]0 }
 | |
 d k r4|
 d d k r4d }	 Pq4q4W|	 rwqqwn  | | k r¡t | ƒ t	 d | ƒ qn  | |  d k rÈ|  d d k rÈqn  d | | k rFd | | k r$d | | d k r$| | k rd
 | | | f } qqn  t | | ƒ t	 d | ƒ qn  | | d } | d k r‹d | | k r‹d | | | d f } n  i  } d | | k r²| | d } n! d | | k rÓ| | d } n  d | k r| d d7 k rd | | d f } q�d | | d f } ns d  | k rmd! | | d  f } d" | k r`d# | | d" f } q�d$ | } n# d" | k r�d% | | d" f } n  d& } d | | k rg  } x2 | | d D]" } | d8 k r»| j | ƒ q»q»W| rd' | d( j
 | ƒ f } d( } qn  d) | | k rId* | | d( j
 | | d) ƒ f } d( } n  d+ | | k r—t | | ƒ } | rŽd, | | d( j
 | ƒ f } n  d( } n  d- | | k rÔd. | | d( j
 | | d- ƒ f } d( } n  d | | k rd/ | | d( j
 | | d ƒ f } d( } n  d0 | | k rŒ| | d0 } | | d d9 k rvy& t | ƒ } d3 | j | j f } WqvqvXn  d4 | | | f } n d5 | | f } d6 | | | f } qW| S(:   s&   
    TODO:
    public sub
    ...
    R   RÕ   RÖ  s7   vars2fortran: Confused?!: "%s" is not defined in vars.
R5  RÑ  sH   vars2fortran: Warning: cross-dependence between variables "%s" and "%s"
R×   s   %s%sintent(callback) %ss   %s%sexternal %ss   %s%soptional %sR   i   RÔ   RN   RÖ   R²   i    s/   vars2fortran: No definition for argument "%s".
R  R¹   s-   vars2fortran: No typespec for argument "%s".
RI   R  s   %s(%s)R  R  R   R  s   %s*(%s)s   %s*%sR9   s	   %s(len=%sR¡  s   %s,kind=%s)s   %s)s   %s(kind=%s)R   s   %s, %sRÌ   R¸   s   %s%sdimension(%s)R¿   s   %s%sintent(%s)R  s   %s%scheck(%s)s   %s%sdepend(%s)R  R:  s   double complexs   (%s,%s)s   %s :: %s=%ss   %s :: %ss   %s%s%s(   R   R  (   s   external(   s   complexs   double complex(   R¨  RÏ   RM   R.  R  R  R,  t
   isoptionalR   R   R—   R`  RS  R   t   imag(   RÖ   RÕ   RÚ   R³  RÙ  Rµ  t   noutRÑ   R8  Rœ   Rº  t   vardefRd  Rl   Re  R§   Rü  Rn  (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyR[  =
  sÔ    
0  	
!$$		$	$	c         C` s^   t  d d ƒ t |  t ƒ t  d d ƒ g  a t t d ƒ } t  d d ƒ t | ƒ } t | S(   Ns   Reading fortran codes...
i    s   Post-processing...
s   Post-processing (stage 2)...
(   R   R”   Rß   RÇ  R¿  Rã   R´  (   t   filest   postlist(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   crackfortranµ
  s    c         C` s,   t  |  ƒ d } d } d t } | | | S(   Ns   
sE   !    -*- f90 -*-
! Note: the context of this file is case sensitive.
sb   
! This file was auto-generated with f2py (version:%s).
! See http://cens.ioc.ee/projects/f2py2e/
(   RÞ  t   f2py_version(   RÖ   t   pyft   headert   footer(    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   crack2fortranÀ
  s    
t   __main__R  s   -quiets   -verbosei   s   -fixs?   Use option -f90 before -fix if Fortran 90 code is in fix form.
s   -skipemptyendss   --ignore-containss   -f77s   -f90Ri   s   -hs   -shows   -mR<  s   Unknown option %s
s   IOError: %s
s    Warning: You have specifyied module name for non Fortran 77 code
  that should not need one (expect if you are scanning F90 code
  for non module blocks but then you should use flag -skipemptyends
  and also be sure that the files do not contain programs without program statement).
s    Writing fortran code to file %s
RÔ  (È   t   __doc__t
   __future__R    R   R   R   RD   R|   Rw   R   R�   RF  R  R   R   t   auxfuncst   versionRh  Rt   Rs   R   R   RX  t   pyffilenameRæ   R  R  Rv   t   debugRà   Rã   Rä   R  Rå   RÇ  R­  Rq   R   Rr   t   skipfunctionsRÜ  RÝ  R–   R�   R  R   RH   R   RM   R   t	   _MAXCACHERà  Rl   RL   RS   Rg   RO   RR   RT   RU   RZ   Rx   Ry   R‹   R„   Ræ  R`   Ra   R…   Rc   Rh   R”   t   beforethisaftert   fortrantypesR÷   RW  Rô   Rõ   t   groupbegins77R†   t   groupbegins90R‡   t	   groupendsRò   t   endifsRñ   Rö   Rç   Rè   Rê   Rë   Rî   Rï   Rð   Ré   Rì   Rí   Rù   Rü   Rÿ   Rø   Rú   Rû   Ró   t   SRÜ   RÝ   RÒ   Rý   Rß   Rþ   RÍ   R  R"  R‡  R(  R)  RP  Rÿ  R$  R&  R*  R   R]  RH  RK  R  R  R£  R’  RŠ  RŽ  RI  RX  R  R  R  R§  R¨  Rª  R²  R´  R¿  RÄ  RÂ  RÅ  Rã  Rä  Rå  Rë  Rì  Rò  Rô  Rö  Rû  Rþ  R   R  R  RN  R  R  R  RÃ  RD  RK  RÁ  RO  RP  RQ  RR  RS  RM  RO  R
  RÞ  RZ  RY  R`  R[  Rg  Rl  t   __name__Re  t   funcsR
   t   f2t   f3t   showblocklistt   argvR§   Rˆ   R^   Rd   RÏ   t   IOErrort   detailR{   Rf  Ri  (    (    (    sQ   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyt   <module>Œ   sö  
	
	  						º+-+++
+++++++++++++++++++++2	‡				
	ÿ Ì				
			.		"_	"	!		,e				
	
8			ÿ A!		(F		x		   													