ó
¢áSc           @` s¸   d  Z  d d l m Z m Z m Z d d d !Z d Z d d l Z d d l Z d d l	 Z	 e	 j
 j Z e	 j j Z e j Z d d	 l Td d d
 „ Z d d „ Z d d „ Z d „  Z d S(   sW  

Rules for building C/API module with f2py2e.

Copyright 1999,2000 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: 2004/11/26 11:13:06 $
Pearu Peterson

i    (   t   divisiont   absolute_importt   print_functions   $Revision: 1.16 $i
   iÿÿÿÿs   See `f2py -v`Ni   (   t   *c         C` sN  | d  k r | } n  | |  k r= t |  ƒ t d | ƒ d Sd |  | k rm t |  | ƒ t d | ƒ d S|  | d } | d k r² d |  | k r² d | |  | d f } n  i  } d } d |  | k rå |  | d } d	 } n' d
 |  | k r|  | d
 } d } n  d | k r“| rU| d d k r;d | } q�d | | | d f } q| d d k r|d | | d f } qd | | d f } ns d | k rãd | | d f } d	 | k rÖd | | d	 f } qd | } n# d	 | k rd | | d	 f } n  d | | f } d |  | k rJd | d j |  | d ƒ f } n  | S(   Ns1   var2fixfortran: No definition for argument "%s".
t    t   typespecs/   var2fixfortran: No typespec for argument "%s".
t   typet   typenames   %s(%s)t   kindselectort   kindt   charselectort   lenR   t   :s   (*)s	   %s(len=*)s	   %s(%s=%s)s   %s*(%s)s   %s*%ss	   %s(len=%ss   %s,kind=%s)s   %s)s   %s(kind=%s)s   %s %st	   dimensiont   ,(   R   R   s   (*)(   R   R   (   t   Nonet   showt   outmesst   join(   t   varst   at   fat   f90modet   vardeft   selectort   lk(    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyt   var2fixfortran   sP    	
		$c         C` s  t  |  ƒ s t ‚ g  } |  d } x¹ |  d D]­ } |  d | } x– t | j d g  ƒ ƒ D]| \ } } | d k rZ d | | f } t d d d d	 g ƒ }	 d
 | | f |	 d <| j | ƒ |	 | | <| | d | <qZ qZ Wq- W|  d j | ƒ t | ƒ }
 d g } | d „ } |  d } t |  ƒ } t	 |  ƒ } d | } | | k rn| | | | <| g |  d d } n | g |  d } t
 | | | | ƒ } d } | d  d k rd } | rÇd | d } n d | d } | | d } | j d d ƒ d k rd | d <qn  d j | ƒ } | r_| d |  d | | f ƒ | s˜| d |  d | f ƒ q˜n9 | d | | f ƒ |
 s˜| d | ƒ | d | } n  |
 ráx@ |  d  j d! ƒ D]( } | j ƒ  j d" ƒ r²| | ƒ q²q²Wn  | d } g  } x< | D]4 } t | | ƒ rø| d | ƒ | j | ƒ qøqøWxY | D]Q } | | k rOq7n  t | | ƒ r7| t
 | | d# | ƒƒ | j | ƒ q7q7WxY | D]Q } | | k r«q“n  t | | ƒ r“| t
 | | d# | ƒƒ | j | ƒ q“q“Wx9 | D]1 } | | k rqïn  | t
 | | d# | ƒƒ qïW| | ƒ |
 rh| r=qh| d$ ƒ | |  d  j ƒ  ƒ | d% ƒ n  d j g  | D] } | | k ru| ^ quƒ } | sÜt |  ƒ rÂ| d& | | | f ƒ qÜ| d' | | | f ƒ n  | rý| d( |  d | f ƒ n
 | d) ƒ | d S(*   NR   t   argsR   R   s   f2py_%s_d%sR   t   integert   intentt   hides   shape(%s, %s)t   =R   c         S` s   d | d |  f | d <d  S(   Ns   %s
      %si    (    (   t   linet   ret(    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyt   adda   s    t   names
   %sf2pywrapi   i    i   s   character*(*)s   character(len=10)s   character*10R
   R   s   (*)t   10s   , s   subroutine f2pywrap_%s_%s (%s)t
   modulenames   use %s, only : %ss   subroutine f2pywrap%s (%s)s   external %st   saved_interfaces   
s   use R   t	   interfaces   end interfaces   %s = .not.(.not.%s(%s))s   %s = %s(%s)s   end subroutine f2pywrap_%s_%st   end(   t
   isfunctiont   AssertionErrort	   enumeratet   gett   dictt   appendt   extendt   boolt   getfortrannamet   ismoduleroutineR   R   t   splitt   lstript
   startswitht
   isexternalt   isscalart   isintent_int   islogicalfunction(   t   routt	   signaturet
   extra_argsR   R   t   vt   it   dt   dnt   dvt   need_interfaceR!   R"   R#   t   fortrannameR   t   newnameR   t   lt   return_char_start
   charselectt   sargsR    t   dumped_args(    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyt   createfuncwrapperN   s¬    
%
	

 
   

.
c         C` s™  t  |  ƒ s t ‚ g  } |  d } x¹ |  d D]­ } |  d | } x– t | j d g  ƒ ƒ D]| \ } } | d k rZ d | | f } t d d d d	 g ƒ }	 d
 | | f |	 d <| j | ƒ |	 | | <| | d | <qZ qZ Wq- W|  d j | ƒ t | ƒ }
 d g } | d „ } |  d } t |  ƒ } t	 |  ƒ } |  d } d j
 | ƒ } | r�| d |  d | | f ƒ | s»| d |  d | f ƒ q»n+ | d | | f ƒ |
 s»| d | ƒ n  |
 rx@ |  d j d ƒ D]( } | j ƒ  j d ƒ rÕ| | ƒ qÕqÕWn  g  } x< | D]4 } t | | ƒ r| d | ƒ | j | ƒ qqWxY | D]Q } | | k rhqPn  t | | ƒ rP| t | | d | ƒƒ | j | ƒ qPqPWx9 | D]1 } | | k rÄq¬n  | t | | d | ƒƒ q¬W|
 r| rðq| d ƒ | |  d j ƒ  ƒ | d ƒ n  d j
 g  | D] } | | k r(| ^ q(ƒ } | sf| d | | f ƒ n  | r‡| d |  d | f ƒ n
 | d ƒ | d S(   NR   R   R   R   s   f2py_%s_d%sR   R   R   R   s   shape(%s, %s)R   R   c         S` s   d | d |  f | d <d  S(   Ns   %s
      %si    (    (   R    R!   (    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyR"   È   s    R#   s   , s   subroutine f2pywrap_%s_%s (%s)R%   s   use %s, only : %ss   subroutine f2pywrap%s (%s)s   external %sR&   s   
s   use R   R'   s   end interfaces   call %s(%s)s   end subroutine f2pywrap_%s_%sR(   i    (   t   issubroutineR*   R+   R,   R-   R.   R/   R0   R1   R2   R   R3   R4   R5   R6   R7   R   (   R:   R;   R<   R   R   R=   R>   R?   R@   RA   RB   R!   R"   R#   RC   R   R   RH   R    RI   (    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyt   createsubrwrapperµ   sz    
%
	

  
.
c         C` sž  t  |  ƒ r?t |  ƒ } |  d } t d | | f ƒ t j |  ƒ }  | } | } d |  k r€ |  d } |  d | |  d | <n  |  d | } t | ƒ sd | k r³ g  | d <n  | d j d ƒ d } x+ | d D] } | j d ƒ rÕ d	 } PqÕ qÕ W| r| d j d
 | ƒ qn  | g |  d |  d (|  t |  ƒ f St |  ƒ r”t |  ƒ } |  d } t d | | f ƒ t j |  ƒ }  |  t	 |  ƒ f S|  d f S(   NR#   s6   		Creating wrapper for Fortran function "%s"("%s")...
t   resultR   R   t   outi   s   out=i    s   out=%sR   s8   		Creating wrapper for Fortran subroutine "%s"("%s")...
R   (
   t   isfunction_wrapR1   R   t   copyt   isintent_outR.   R5   RJ   t   issubroutine_wrapRL   (   R:   RC   R#   t   fnamet   rnamet   fvart   flagR>   (    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyt   assubr  s>    


(   t   __doc__t
   __future__R    R   R   t   __version__t   f2py_versiont   pprintRP   t   syst   stderrt   writet   errmesst   stdoutR   R   t   auxfuncsR   R   RJ   RL   RW   (    (    (    sN   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/f2py/func2subr.pyt   <module>   s   	
0gO