Ë
    ›2Úið$  ã                   ó¤   — 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­ i Zd„ Zd ej                  «       j                  z  ZdZdZd„ Zy)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 ]-  }t        |«      r|j                  |«       Œ |t        |«      z   }Œ/ |S )NÚbody)ÚismoduleÚhasbodyÚappendÚfindf90modules)ÚmÚretÚbs      úN/var/www/html/acx/venv/lib/python3.12/site-packages/numpy/f2py/f90mod_rules.pyr   r   "   s\   € Ü�„{Øˆsˆ
Ü�1Œ:Øˆ	Ø
€CØˆv‰Yò *ˆÜ�AŒ;Ø�J‰J�q�Màœ qÓ)Ñ)‰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                 ór  — 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 ]  }|j	                  |d   «       Œ |d   j                  «       D ]L  }|d   |   }||vsŒ t        t        t        «      |«      rŒ+|j	                  |«       |j	                  |«       ŒN t        d|d   z  «       |rt        ddj                  |«      z  «       d	g}|fd„}d	g}|fd„}t        j                  |«      } |d|d   z  «        |d|d   z  «       t        |«      r.|d   }t        |t        «      rdj                  |«      } ||«       |r |d«       |D �]“  }|d   |   }|j	                  |«       t        j                   |«      }t        j"                  |   }t        j$                  ||«      }|d   j'                  dd«      j)                  «       }|j'                  dd«      j)                  «       }|sd}t*        } |dt-        |«      ›d|d   ›d|›d |›d!t        j.                  |«      ›d"�«        |d#t        j0                  ||«      z  «       t        |«      r1|d   }t        |t        «      rdj                  |«      } |d$|z  «       t3        |«      �r|	j	                  d%|d   ›d&|›�«       |
j	                  |	d'   «       |j	                  d(|z  «       |j	                  d)«        |d*|d   ›d+|›d,�«        |d-|	d'   z  «        |d.|d   ›d/t-        |«      ›d�«        |d0«       |d1   t4        z   |d1<   t7        dt9        |d   «      dz   «      } |d2d3j                  |D �cg c]  }d4|z  ‘Œ	 c}«      z  «       |d1   |z   |d1<    |d5|	d'   z  «       �ŒL|	j	                  |«       |j	                  d6|z  «       |j	                  d7«        |d*|d   ›d8|›d,�«       �Œ– |r |d9«       t        |«      �rÁ|d   D �]¸  }t;        |«      st        d:|d;   › d|d   › d�«       Œ(|j	                  d<|d   z  «       |d   |d=<   |j=                  |«      \  } }!t?        |«      rO|d1   |!z   |d1<   |	j	                  d>|d   ›d?|d   ›�«       |j	                  tA        jB                  |d¬@«      «       ny|!rO|d1   |!z   |d1<   |	j	                  d>|d   ›d?|d   ›�«       |j	                  tA        jD                  |d¬@«      «       n(|	j	                  |d   «       |j	                  |	d'   «       g | dA<   tG        | |«      }"g |"dB<   g |"dC<   tI        ||"«      } |d|d   ›dD|d   ›d?|d   ›dE|d   ›d?|d   ›d"�«       |j	                  d6|d   z  «       |j	                  dF«        |d*|d   ›d8|d   ›d,�«       �Œ»  |dG«        |dH«       dI|d   ›dJd3j                  |«      ›dK|d1   ›�|d1<   d?|d   v rdL}#nd}# |dM|#›dN|d   ›dO|d   jK                  «       ›dPd3j                  |«      ›dQ�	«        |dR|d   z  «        |dS|#›dN|d   ›dO|d   jK                  «       ›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j                  d^g|z   «      «        |d_«        |d`«       |
rtM        |
«      D ]  }$ |da|$z  «       Œ  |dbd3j                  tM        |	«      «      z  «        |dc|d   z  «        |dj                  |dd   «      j'                  dedf«      «       g |dd<   |dB   j	                  dg|d   ›dhd3j                  tM        |«      «      ›di�«       �ŒÍ d	|dj<   g |dk<   g |dC<   |d1   |dd<   tO        |dB   «      dk  rd	|dB<   ||d1   fS c c}w )lNr   )ÚrulesÚF_FUNCzarrayobject.hú
)Ú	includes0Úincludesz"Fortran 90/95 modules:\n")Úf90modhooksÚinitf90modhooksr   ÚneedÚseparatorsforÚdocsÚlatexdocÚ c                 ó   — |d   ›d| ›�|d<   y )Nr   z
      © ©ÚlineÚss     r   Úfaddzbuildhooks.<locals>.fadd`   s   € Ø!" 1£¡tÐ,ˆˆ!Šr   c                 ó   — |d   ›d| ›�|d<   y ©Nr   r   r$   r%   s     r   Údaddzbuildhooks.<locals>.daddd   s   € Ø˜Q›4¡Ð&ˆˆ!Šr   Únamer   Úvarsz.		Constructing F90 module support for "%s"...
z		  Variables: %s
ú c                 ó   — |d   ›d| ›�|d<   y r*   r$   r%   s     r   Úcaddzbuildhooks.<locals>.caddz   ó   € Ø  ›t¡TÐ*ˆAˆaŠDr   c                 ó   — |d   ›d| ›�|d<   y 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   z8void (*%s)(int*,npy_intp*,void(*)(char*,npy_intp*),int*)z6void (*)(int*,npy_intp*,void(*)(char*,npy_intp*),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))
ú,zs(%s)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(   rJ   r+   r   ÚsargsÚfargsÚefargsÚmodobjsÚnotvarsÚonlyvarsÚsargspÚifargsÚmfargsr   ÚnÚvarÚchooksr0   Úihooksr3   Úvrdr4   ÚctÚatÚdmÚdmsÚuse_fgetdims2ÚiÚapiÚwrapÚarr   Úas%                                        r   Ú
buildhooksr„   W   sÆ  € ÝØ°¸RØ˜oÐ.Ø*.¸DÑAØ1Ð2Øñ	€Cð
 ˆT€Fàó -àˆ$€Càó 'ä˜EÓ"ó 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È#Õ+NØ—‘ Ô"Ø—‘˜aÕ ð		!ô
 	ÐCØ�6‘ñô 	áÜÐ+¨s¯x©x¸Ó/AÑBÔCØ�ˆàó 	+à�ˆàó 	+ô ×#Ñ# AÓ&ˆÙÐ6¸!¸F¹)ÑDÔEÙÐ@ÀAÀfÁIÑNÔOÜ�1Œ:Ø�V‘9ˆDÜ˜$¤Ô%Ø—y‘y “�Ù�ŒJÙÙÐ'Ô(Øó *	LˆAØ�F‘)˜A‘,ˆCØ�N‰N˜1ÔÜ×#Ñ# CÓ(ˆBÜ×%Ñ% bÑ)ˆBÜ×%Ñ% a¨Ó-ˆBØ�V‘*×$Ñ$ S¨$Ó/×5Ñ5Ó7ˆCØ—+‘+˜c 4Ó(×.Ñ.Ó0ˆCÙØ�Ü%ˆMÚÜ! !Õ$ b¨£j²#²rÜ×&Ñ& sÕ+ð-ô .ñ Ð+Ü×)Ñ)¨!¨SÓ1ñ3ô 4ä�sŒ|Ø˜6‘{�Ü˜d¤DÔ)ØŸ9™9 T›?�DÙ�X Ñ&Ô'Ü˜SÕ!Ø—’°Q°v³YÁÐBÔCØ—‘˜e B™iÔ(Ø—‘ØNÐRSÑTôVà—‘ÐVÔWÚ¸Q¸v»YÊÐJÔKÙÐ:¸eÀB¹iÑHÔIÚØ˜“i¤°Õ!3ð5ô 6áÐ%Ô&Ø" 1™I¬	Ñ1��q‘	Ü˜Aœs 2 f¡:›°Ñ2Ó3�ÙÐ)Ø—h‘h°SÖ9° ¨!£Ò9Ó:ñ<ô =à" 1™I¨Ñ5��q‘	ÙÐ(¨E°"©IÑ6Ö7à—‘˜Q”Ø—‘˜Z¨1Ñ-Ô.Ø—‘˜gÔ&Ú¸Q¸v»YÊÐJÖKðU*	LñV ÙÐ%Ô&Ü�1�:Ø�v‘Yó !-�Ü  ”|Üð )Ø)*¨7©¨°A°a¸±i°[ÀðDô EàØ—‘˜v¨¨6©Ñ3Ô4Ø"# F¡)��,‘Ø!ŸN™N¨1Ó-‘	��TÜ˜a”=Ø & q¡	¨DÑ 0�F˜1‘IØ—L’L°Q°v³YÀÀ&Â	Ð!JÔKØ—M‘M¤)×"=Ñ"=¸aÈ1Ô"MÕNáØ$*¨1¡I°Ñ$4˜˜q™	ØŸš¸¸6»ÀAÀfÂIÐ%NÔOØŸ™Ü%×7Ñ7¸ÀQÔGõIð Ÿ™ Q v¡YÔ/ØŸ™ e¨B¡iÔ0Ø(*�Ð$Ñ%Ü  SÓ)�Ø��6‘
Ø!#��:‘Ü   bÓ)�Úð ˜&›	 1 V£9¨a°«i¸¸6»ÀAÀfÃIðOô Pð —‘˜Z¨1¨V©9Ñ5Ô6Ø—‘˜hÔ'ÚØ˜“i  6£ð,ö -ðA!-ñD 	ÐÔÙˆS�	àˆf‹I�s—x‘x •¨¨qª	ð3ˆˆq‰	à�!�F‘)ÑØ ‰FàˆFÚÚ˜˜&›	 1 V¡9§?¡?Õ#4°c·h±h¸vÕ6FðHô 	IáÐ/°1°V±9Ñ=Ô>ÚÚ˜˜&›	 1 V¡9§?¡?Õ#4°a¸³iðAô 	BáˆUŒØ  Ñ/°&Ñ8¸6ÑAˆˆMÒàˆf‹I�q˜“y ! F£)ð#-ð ".Ø03Ð4EÑ0Fñ"GˆÐÑáˆRŒÙÐ3°q¸±yÑAÔBÙÜ# FÓ+ò ;�Ú¨A¨f«I±qÐ9Õ:ð;áÙ�—‘˜;˜-¨&Ñ0Ó1Ô2Ù�Ô!ÙÐ%Ô&ÙÜ# FÓ+ò *�Ù�] aÑ(Õ)ð*áÐ%¨¯©´.ÀÓ2GÓ)HÑIÔJÙÐ*¨a°©iÑ8Ô9áˆT�Y‰Y�s˜:‘Ó'×/Ñ/ØÐ/ó1ô 	2ð ˆˆJ‰ØˆF‰×Ò¨a°«iØ.1¯h©h´~ÀgÓ7NÕ.OðQö 	RðsZRðx €CˆÑØ€Cˆ�JØ€Cˆ
�OØ˜!‘f€Cˆ
�OÜ
ˆ3ˆv‰;Ó˜1ÒØˆˆF‰Ø��q‘	ˆ>Ðùòu  :s   Î(`4)Ú__doc__Ú__version__Úf2py_versionÚnumpyÚnpr"   r   r   Úcrackfortranr   r	   ÚauxfuncsÚoptionsr   ÚintpÚitemsizer^   rZ   Úfgetdims2_sar„   r$   r   r   ú<module>r�      sm   ðñð " " RÐ(€à€ã å Ý ß 9ô
 à
€òð7ð  :A¸¿¹»×9KÑ9Kñ!L€	ð$*€	ð	*€óqr   