§
    ËãßcÜ$  ã                   ó    — d Z ddd…         ZdZddlZddlmZ dd	lmZ dd
lm	Z	m
Z
 ddlT i Zd„ Zd ej        ¦   «         j        z  ZdZdZd„ ZdS )aJ  

Build F90 module support for f2py2e.

Copyright 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: 2005/02/03 19:30:23 $
Pearu Peterson

z$Revision: 1.27 $é
   éÿÿÿÿzSee `f2py -v`é    Né   )Ú	capi_maps)Ú	func2subr)Úundo_rmbadnameÚundo_rmbadname1)Ú*c                 óÔ   — t          | ¦  «        r| gS t          | ¦  «        sg S g }| d         D ]9}t          |¦  «        r|                     |¦  «         Œ'|t          |¦  «        z   }Œ:|S )NÚbody)ÚismoduleÚhasbodyÚappendÚfindf90modules)ÚmÚretÚbs      ú9/usr/lib/python3/dist-packages/numpy/f2py/f90mod_rules.pyr   r   "   sz   € Ý��{„{ð Øˆsˆ
Ý�1‰:Œ:ð Øˆ	Ø
€CØˆvŒYð *ð *ˆÝ�A‰;Œ;ð 	*Ø�JŠJ�q‰MŒMˆMˆMà� qÑ)Ô)Ñ)ˆCˆCØ€Jó    a�        external f2pysetdata
      logical ns
      integer r,i
      integer(%d) s(*)
      ns = .FALSE.
      if (allocated(d)) then
         do i=1,r
            if ((size(d,i).ne.s(i)).and.(s(i).ge.0)) then
               ns = .TRUE.
            end if
         end do
         if (ns) then
            deallocate(d)
         end if
      end if
      if ((.not.allocated(d)).and.(s(1).ge.1)) thenz«      end if
      if (allocated(d)) then
         do i=1,r
            s(i) = size(d,i)
         end do
      end if
      flag = 1
      call f2pysetdata(d,allocated(d))zÕ      end if
      if (allocated(d)) then
         do i=1,r
            s(i) = size(d,i)
         end do
         !s(r) must be equal to len(d(1))
      end if
      flag = 2
      call f2pysetdata(d,allocated(d))c                 óª  — ddl m} g g g ddgdddœdgg dœ}d	g}|fd
„}d	g}|fd„}t          | ¦  «        D �	]Û}g g g g |d         gg f\  }}	}
}}}g }g }g }t          |¦  «        r&|d         D ]}|                     |d         ¦  «         Œ|d                              ¦   «         D ]a}|d         |         }||vrM t          t          t          ¦  «        |¦  «        s*|                     |¦  «         |                     |¦  «         Œbt          d|d         z  ¦  «         |r%t          dd 
                    |¦  «        z  ¦  «         d	g}|fd„}d	g}|fd„}t          j        |¦  «        } |d|d         z  ¦  «          |d|d         z  ¦  «         t          |¦  «        r=|d         }t          |t          ¦  «        rd 
                    |¦  «        } ||¦  «         |r |d¦  «         |D �])}|d         |         }|                     |¦  «         t          j        |¦  «        }t          j        |         }t          j        ||¦  «        }|d                              dd¦  «                             ¦   «         }|                     dd¦  «                             ¦   «         }|sd}t*          } |dt-          |¦  «        ›d|d         ›d|›d |›d!t          j        |¦  «        ›d"�¦  «          |d#t          j        ||¦  «        z  ¦  «         t          |¦  «        r@|d         }t          |t          ¦  «        rd 
                    |¦  «        } |d$|z  ¦  «         t3          |¦  «        �rM|	                     d%|d         ›d&|›�¦  «         |
                     |	d'         ¦  «         |                     d(|z  ¦  «         |                     d)¦  «          |d*|d         ›d+|›d,�¦  «          |d-|	d'         z  ¦  «          |d.|d         ›d/t-          |¦  «        ›d�¦  «          |d0¦  «         |d1         t4          z   |d1<   t7          dt9          |d         ¦  «        dz   ¦  «        } |d2d3 
                    d4„ |D ¦   «         ¦  «        z  ¦  «         |d1         |z   |d1<    |d5|	d'         z  ¦  «         �ŒÏ|	                     |¦  «         |                     d6|z  ¦  «         |                     d7¦  «          |d*|d         ›d8|›d,�¦  «         �Œ+|r |d9¦  «         t          |¦  «        �r>|d         D �]4}t;          |¦  «        s#t          d:|d;         › d|d         › d�¦  «         Œ5|                     d<|d         z  ¦  «         |d         |d=<   |                     |¦  «        \  }} t?          |¦  «        r_|d1         | z   |d1<   |	                     d>|d         ›d?|d         ›�¦  «         |                     tA          j!        |d¬@¦  «        ¦  «         n—| r_|d1         | z   |d1<   |	                     d>|d         ›d?|d         ›�¦  «         |                     tA          j"        |d¬@¦  «        ¦  «         n6|	                     |d         ¦  «         |                     |	d'         ¦  «         g |dA<   tG          ||¦  «        }!g |!dB<   g |!dC<   tI          ||!¦  «        } |d|d         ›dD|d         ›d?|d         ›dE|d         ›d?|d         ›d"�¦  «         |                     d6|d         z  ¦  «         |                     dF¦  «          |d*|d         ›d8|d         ›d,�¦  «         �Œ6 |dG¦  «          |dH¦  «         dI|d         ›dJd3 
                    |¦  «        ›dK|d1         ›�|d1<   d?|d         v rdL}"nd}" |dM|"›dN|d         ›dO|d          %                    ¦   «         ›dPd3 
                    |¦  «        ›dQ�	¦  «          |dR|d         z  ¦  «          |dS|"›dN|d         ›dO|d          %                    ¦   «         ›dT|d         ›dU�	¦  «          |dV¦  «         |dW         |z   |z   |dW<   dX|d         ›dY|d         ›dZ|d         ›dQ�g|d[         z   |d[<    |d	¦  «          |d\|d         z  ¦  «         |r)tM          |¦  «        D ]}# |d.|d         ›d]|#›�¦  «         Œ|r- |d 
                    d^g|z   ¦  «        ¦  «          |d_¦  «          |d`¦  «         |
r tM          |
¦  «        D ]}# |da|#z  ¦  «         Œ |dbd3 
                    tM          |	¦  «        ¦  «        z  ¦  «          |dc|d         z  ¦  «          |d 
                    |dd         ¦  «                             dedf¦  «        ¦  «         g |dd<   |dB                              dg|d         ›dhd3 
                    tM          |¦  «        ¦  «        ›di�¦  «         �	ŒÝd	|dj<   g |dk<   g |dC<   |d1         |dd<   tO          |dB         ¦  «        dk    rd	|dB<   ||d1         fS )lNr   )ÚrulesÚF_FUNCzarrayobject.hú
)Ú	includes0Úincludesz"Fortran 90/95 modules:\n")Úf90modhooksÚinitf90modhooksr   ÚneedÚseparatorsforÚdocsÚlatexdocÚ c                 ó&   — |d         ›d| ›�|d<   d S )Nr   z
      © ©ÚlineÚss     r   Úfaddzbuildhooks.<locals>.fadd`   s   € Ø!" 1¤   t tÐ,ˆˆ!‰ˆˆr   c                 ó&   — |d         ›d| ›�|d<   d S ©Nr   r   r$   r%   s     r   Údaddzbuildhooks.<locals>.daddd   s   € Ø˜Qœ4˜4˜4  Ð&ˆˆ!‰ˆˆr   Únamer   Úvarsz.		Constructing F90 module support for "%s"...
z		  Variables: %s
ú c                 ó&   — |d         ›d| ›�|d<   d S r*   r$   r%   s     r   Úcaddzbuildhooks.<locals>.caddz   ó   € Ø  œt˜t˜t T TÐ*ˆAˆa‰DˆDˆDr   c                 ó&   — |d         ›d| ›�|d<   d S r*   r$   r%   s     r   Úiaddzbuildhooks.<locals>.iadd~   r1   r   z'static FortranDataDef f2py_%s_def[] = {z.\subsection{Fortran 90/95 module \texttt{%s}}
Únotez\begin{description}Údimsr
   z-1ú:z	{"z",Úrankz,{{z}},z, z},z\item[]{{}\verb@%s@{}}z--- %sÚf2py_Ú	_getdims_r   z.void (*%s)(int*,int*,void(*)(char*,int*),int*)z,void (*)(int*,int*,void(*)(char*,int*),int*)z	f2py_z_def[i_f2py++].func = ú;z#subroutine %s(r,s,f2pysetdata,flag)zuse z, only: d => zinteger flag
r   z allocate(d(%s))
ú,c                 ó   — g | ]}d |z  ‘ŒS )zs(%s)r$   )Ú.0Úis     r   ú
<listcomp>zbuildhooks.<locals>.<listcomp>®   s   € Ð9Ð9Ð9° ¨!¡Ð9Ð9Ð9r   zend subroutine %szchar *%szchar*z_def[i_f2py++].data = z\end{description}z"f90mod_rules.buildhooks: skipping Úblockz%s()Ú
modulenameÚ	f2pywrap_Ú_)Ú	signatureÚexternroutinesr    Údocshortz4",-1,{{-1}},0,0,NULL,(void *)f2py_rout_#modulename#_z,doc_f2py_rout_#modulename#_zchar *z	{NULL}
};
ú}zstatic void f2py_setup_ú(z) {
	int i_f2py=0;Ú	F_FUNC_USzextern void z	(f2pyinitz	,F2PYINITz)(void (*)(z));z static void f2py_init_%s(void) {ú	z)(f2py_setup_z);z}
r   z	PyDict_SetItemString(d, "z", PyFortranObject_New(f2py_z_def,f2py_init_r   z$subroutine f2pyinit%s(f2pysetupfunc)z	, only : Ú	interfacezend interfacezexternal f2pysetupfunczexternal %szcall f2pysetupfunc(%s)zend subroutine f2pyinit%s
r!   z\subsection{z\subsubsection{z"	z --- ú"Úroutine_defsÚdoc)(r"   r   r   r   r   ÚkeysÚl_orÚisintent_hideÚ	isprivateÚoutmessÚjoinr   Úmodsign2mapÚhasnoteÚ
isinstanceÚlistÚgetctypeÚ
c2capi_mapÚ
getarrdimsÚreplaceÚstripÚ	fgetdims2r	   Ú
get_elsizeÚgetarrdocsignÚisallocatableÚ	fgetdims1ÚrangeÚintÚ	isroutineÚbuildapiÚ
isfunctionr   ÚcreatefuncwrapperÚcreatesubrwrapperÚ
applyrulesÚ
dictappendÚupperr   Úlen)$Úpymodr   r   Úfhooksr(   rN   r+   r   ÚsargsÚfargsÚefargsÚmodobjsÚnotvarsÚonlyvarsÚsargspÚifargsÚmfargsr   ÚnÚvarÚchooksr0   Úihooksr3   Úvrdr4   ÚctÚatÚdmÚdmsÚuse_fgetdims2ÚapiÚwrapÚarr   Úas$                                       r   Ú
buildhooksr‡   W   sº  € ØÐÐÐÐÐØ°¸RØ˜oÐ.Ø*.¸DÐAÐAØ1Ð2Øð	ð €Cð
 ˆT€Fàð -ð -ð -ð -àˆ$€Càð 'ð 'ð 'ð 'å˜EÑ"Ô"ð ZRñ ZRˆØ;=¸rÀ2ÀrØˆfŒIðLØð<Ñ8ˆˆu�f˜g w°àˆØˆØˆÝ�1‰:Œ:ð 	*Ø�v”Yð *ð *�Ø—’˜q œyÑ)Ô)Ð)Ð)Ø�6”—’Ñ!Ô!ð 	!ð 	!ˆAØ�F”)˜A”,ˆCØ˜Ð Ð Ð+I­4µ½yÑ+IÔ+IÈ#Ñ+NÔ+NÐ Ø—’ Ñ"Ô"Ð"Ø—’˜aÑ Ô Ð øÝÐCØ�6”ññ 	ô 	ð 	àð 	DÝÐ+¨s¯xªx¸Ñ/AÔ/AÑBÑCÔCÐCØ�ˆàð 	+ð 	+ð 	+ð 	+à�ˆàð 	+ð 	+ð 	+ð 	+õ Ô# AÑ&Ô&ˆØˆÐ6¸!¸F¼)ÑDÑEÔEÐEØˆÐ@ÀAÀfÄIÑNÑOÔOÐOÝ�1‰:Œ:ð 	Ø�V”9ˆDÝ˜$¥Ñ%Ô%ð 'Ø—y’y ‘”�ØˆD�‰JŒJˆJØð 	)ØˆDÐ'Ñ(Ô(Ð(Øð *	Lñ *	LˆAØ�F”)˜A”,ˆCØ�NŠN˜1ÑÔÐÝÔ# CÑ(Ô(ˆBÝÔ% bÔ)ˆBÝÔ% a¨Ñ-Ô-ˆBØ�V”*×$Ò$ S¨$Ñ/Ô/×5Ò5Ñ7Ô7ˆCØ—+’+˜c 4Ñ(Ô(×.Ò.Ñ0Ô0ˆCØð Ø�Ý%ˆMØˆDˆDÝ! !Ñ$Ô$Ð$Ð$ b¨¤j j j°#°#°#°r°r°rÝÔ& sÑ+Ô+Ð+Ð+ð-ñ .ô .ð .ð ˆDÐ+ÝÔ)¨!¨SÑ1Ô1ñ3ñ 4ô 4ð 4å�s‰|Œ|ð (Ø˜6”{�Ý˜d¥DÑ)Ô)ð +ØŸ9š9 T™?œ?�DØ��X Ñ&Ñ'Ô'Ð'Ý˜SÑ!Ô!ñ LØ—’�°Q°v´Y°Y°YÀÀÐBÑCÔCÐCØ—’˜e BœiÑ(Ô(Ð(Ø—’ØDÈÑJñLô Lð Là—’ÐLÑMÔMÐMØ��¸Q¸v¼Y¸Y¸YÈÈÈÐJÑKÔKÐKØ�Ð:¸eÀB¼iÑHÑIÔIÐIØ��Ø˜”i�i�i¥°Ñ!3Ô!3Ð!3Ð!3ð5ñ 6ô 6ð 6à�Ð%Ñ&Ô&Ð&Ø" 1œI­	Ñ1��q‘	Ý˜A�s 2 f¤:™œ°Ñ2Ñ3Ô3�Ø�Ð)Ø—h’hÐ9Ð9°SÐ9Ñ9Ô9Ñ:Ô:ñ<ñ =ô =ð =à" 1œI¨Ñ5��q‘	Ø�Ð(¨E°"¬IÑ6Ñ7Ô7Ð7Ñ7à—’˜Q‘”�Ø—’˜Z¨1Ñ-Ñ.Ô.Ð.Ø—’˜gÑ&Ô&Ð&Ø��¸Q¸v¼Y¸Y¸YÈÈÈÐJÑKÔKÐKÑKØð 	'ØˆDÐ%Ñ&Ô&Ð&Ý�1‰:Œ:ñ "	-Ø�v”Yð !-ñ !-�Ý  ‘|”|ð Ýð DØ)*¨7¬ðDð DØ67¸´iðDð Dð Dñ Eô Eð EàØ—’˜v¨¨6¬Ñ3Ñ4Ô4Ð4Ø"# F¤)��,‘Ø!ŸNšN¨1Ñ-Ô-‘	��TÝ˜a‘=”=ð 1Ø & q¤	¨DÑ 0�F˜1‘IØ—L’L�L°Q°v´Y°Y°YÀÀ&Ä	À	Ð!JÑKÔKÐKØ—M’M¥)Ô"=¸aÈ1Ð"MÑ"MÔ"MÑNÔNÐNÐNàð 1Ø$*¨1¤I°Ñ$4˜˜q™	ØŸš˜¸¸6¼¸¸ÀAÀfÄIÀIÐ%NÑOÔOÐOØŸšÝ%Ô7¸ÀQÐGÑGÔGñIô Ið Ið Ið Ÿš Q v¤YÑ/Ô/Ð/ØŸš e¨B¤iÑ0Ô0Ð0Ø(*�Ð$Ñ%Ý  SÑ)Ô)�Ø��6‘
Ø!#��:‘Ý   bÑ)Ô)�Ø��ð ˜&œ	˜	˜	 1 V¤9 9 9¨a°¬i¨i¨i¸¸6¼¸¸ÀAÀfÄIÀIÀIðOñ Pô Pð Pð —’˜Z¨1¨V¬9Ñ5Ñ6Ô6Ð6Ø—’˜hÑ'Ô'Ð'Ø��Ø˜”i�i�i  6¤  ð,ñ -ô -ð -ñ -àˆÐÑÔÐØˆˆS‰	Œ	ˆ	ˆ	àˆfŒIˆIˆI�s—x’x ‘”��¨¨q¬	¨	ð3ˆˆq‰	à�!�F”)ÐÐØ ˆFˆFàˆFØˆˆØ��˜˜&œ	˜	˜	 1 V¤9§?¢?Ñ#4Ô#4Ð#4Ð#4°c·h²h¸vÑ6FÔ6FÐ6FÐ6FðHñ 	Iô 	Ið 	IàˆÐ/°1°V´9Ñ=Ñ>Ô>Ð>ØˆˆØ��˜˜&œ	˜	˜	 1 V¤9§?¢?Ñ#4Ô#4Ð#4Ð#4°a¸´i°i°iðAñ 	Bô 	Bð 	BàˆˆU‰ŒˆØ  Ô/°&Ñ8¸6ÑAˆˆMÑÐàˆfŒIˆIˆI�q˜”y�y�y ! F¤) ) )ð#-ð ".Ø03Ð4EÔ0Fñ"GˆÐÑàˆˆR‰ŒˆØˆÐ3°q¸´yÑAÑBÔBÐBØð 	;Ý# FÑ+Ô+ð ;ð ;�Ø��¨A¨f¬I¨I¨I°q°qÐ9Ñ:Ô:Ð:Ð:Øð 	"ØˆD�—’˜;˜-¨&Ñ0Ñ1Ô1Ñ2Ô2Ð2ØˆD�Ñ!Ô!Ð!ØˆÐ%Ñ&Ô&Ð&Øð 	*Ý# FÑ+Ô+ð *ð *�Ø��] aÑ(Ñ)Ô)Ð)Ð)ØˆÐ%¨¯ªµ.ÀÑ2GÔ2GÑ)HÔ)HÑIÑJÔJÐJØˆÐ*¨a°¬iÑ8Ñ9Ô9Ð9àˆˆT�YŠY�s˜:”Ñ'Ô'×/Ò/ØÐ/ñ1ô 1ñ 	2ô 	2ð 	2ð ˆˆJ‰ØˆFŒ×ÒÐ¨a°¬i¨i¨iØ.1¯hªhµ~ÀgÑ7NÔ7NÑ.OÔ.OÐ.OÐ.OðQñ 	Rô 	Rð 	Rñ 	Rð €CˆÑØ€Cˆ�JØ€Cˆ
�OØ˜!”f€Cˆ
�OÝ
ˆ3ˆvŒ;ÑÔ˜1ÒÐØˆˆF‰Ø��q”	ˆ>Ðr   )Ú__doc__Ú__version__Úf2py_versionÚnumpyÚnpr"   r   r   Úcrackfortranr   r	   ÚauxfuncsÚoptionsr   ÚintpÚitemsizerb   r^   Úfgetdims2_sar‡   r$   r   r   ú<module>r“      sØ   ððð ð " " R %Ô(€à€à Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð
 Ð Ð Ð à
€ðð ð ð7ð  :A¸¼¹¼Ô9Kñ!L€	ð$*€	ð	*€ðqð qð qð qð qr   