§
    ÈÁ³g’&  ã                   ó    — 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 )a2  
Build F90 module support for f2py2e.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
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.
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      úU/var/www/html/mpstechhub/venv/lib/python3.11/site-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          | ¦  «        }t          | ¦  «        D �
]i}g g g g |d         gg f\  }	}
}}}}g }g }g }t	          |¦  «        r&|d         D ]}|                     |d         ¦  «         Œ|d                              ¦   «         D ]p}|d         |         }||vr\t          |¦  «        rM t          t          t          ¦  «        |¦  «        s*|                     |¦  «         |                     |¦  «         Œqt          d|d         z  ¦  «         t          |¦  «        dk    r8t          |¦  «        dk    r%|d         |v rt          d|d         › d�¦  «         �ŒB|d         |v r*t          |¦  «        rt          d|d         › d�¦  «         �Œv|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}t2          } |d t5          |¦  «        ›d!|d"         ›d#|›d$|›d%t          j        |¦  «        ›d&�¦  «          |d't          j        ||¦  «        z  ¦  «         t#          |¦  «        r@|d         }t%          |t&          ¦  «        rd                     |¦  «        } |d(|z  ¦  «         t;          |¦  «        �rM|
                     d)|d         ›d*|›�¦  «         |                     |
d+         ¦  «         |	                     d,|z  ¦  «         |                     d-¦  «          |d.|d         ›d/|›d0�¦  «          |d1|
d+         z  ¦  «          |d2|d         ›d3t5          |¦  «        ›d�¦  «          |d4¦  «         |d         t<          z   |d<   t?          dtA          |d"         ¦  «        dz   ¦  «        } |d5d6                     d7„ |D ¦   «         ¦  «        z  ¦  «         |d         |z   |d<    |d8|
d+         z  ¦  «         �ŒÏ|
                     |¦  «         |	                     d9|z  ¦  «         |                     d:¦  «          |d.|d         ›d;|›d0�¦  «         �Œ+|r |d<¦  «         t	          |¦  «        �r>|d         D �]4}tC          |¦  «        s#t          d=|d>         › d|d         › d�¦  «         Œ5|                     d?|d         z  ¦  «         |d         |d@<   | "                    |¦  «        \  } }!tG          |¦  «        r_|d         |!z   |d<   |
                     dA|d         ›dB|d         ›�¦  «         |                     tI          j%        |d¬C¦  «        ¦  «         n—|!r_|d         |!z   |d<   |
                     dA|d         ›dB|d         ›�¦  «         |                     tI          j&        |d¬C¦  «        ¦  «         n6|
                     |d         ¦  «         |                     |
d+         ¦  «         g | dD<   tO          | |¦  «        }"g |"dE<   g |"dF<   tQ          ||"¦  «        } |d |d         ›dG|d         ›dB|d         ›dH|d         ›dB|d         ›d&�¦  «         |	                     d9|d         z  ¦  «         |                     dI¦  «          |d.|d         ›d;|d         ›d0�¦  «         �Œ6 |dJ¦  «          |dK¦  «         dL|d         ›dMd6                     |	¦  «        ›dN|d         ›�|d<   dB|d         v rdO}#nd}# |dP|#›dQ|d         ›dR|d          )                    ¦   «         ›dSd6                     |¦  «        ›dT�	¦  «          |dU|d         z  ¦  «          |dV|#›dQ|d         ›dR|d          )                    ¦   «         ›dW|d         ›dX�	¦  «          |dY¦  «         |dZ         |z   |z   |dZ<   d[|d         ›d\|d         ›d]|d         ›dT�g|d^         z   |d^<    |d	¦  «          |d_|d         z  ¦  «         |r)tU          |¦  «        D ]}$ |d2|d         ›d`|$›�¦  «         Œ|r- |d                     dag|z   ¦  «        ¦  «          |db¦  «          |dc¦  «         |r tU          |¦  «        D ]}$ |dd|$z  ¦  «         Œ |ded6                     tU          |
¦  «        ¦  «        z  ¦  «          |df|d         z  ¦  «          |d                     |dg         ¦  «                             dhdi¦  «        ¦  «         g |dg<   |dE                              dj|d         ›dkd6                     tU          |¦  «        ¦  «        ›dl�¦  «         �
Œkd	|dm<   g |dn<   g |dF<   |d         |dg<   t          |dE         ¦  «        dk    rd	|dE<   ||d         fS )oNr   )Ú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>.dadd_   s   € Ø˜Qœ4˜4˜4  Ð&ˆˆ!‰ˆˆr   Únamer   Úvarsz.		Constructing F90 module support for "%s"...
r   z			Skipping z7 since there are no public vars/func in this module...
z5 since it is in 'use' and contains a common block...
z		  Variables: %s
ú c                 ó&   — |d         ›d| ›�|d<   d S r*   r$   r%   s     r   Úcaddzbuildhooks.<locals>.cadd€   ó   € Ø  œ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   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
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   Úgetuseblocksr   r   r   ÚkeysÚ
isvariableÚl_orÚisintent_hideÚ	isprivateÚoutmessÚlenÚcontainscommonÚ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   )%Úpymodr   r   Úfhooksr(   rN   r+   Úusenamesr   Ú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‹   R   sf  € ØÐÐÐÐÐØ°¸RØ˜oÐ.Ø*.¸DÐAÐAØ1Ð2Øð	ð €Cð
 ˆT€Fàð -ð -ð -ð -àˆ$€Càð 'ð 'ð 'ð 'õ ˜EÑ"Ô"€HÝ˜EÑ"Ô"ð cRñ cRˆØ;=¸rÀ2ÀrØˆfŒIðLØð<Ñ8ˆˆu�f˜g w°àˆØˆØˆÝ�1‰:Œ:ð 	*Ø�v”Yð *ð *�Ø—’˜q œyÑ)Ô)Ð)Ð)Ø�6”—’Ñ!Ô!ð 	!ð 	!ˆAØ�F”)˜A”,ˆCà˜Ð Ð ¥Z°¡_¤_Ð Ð?]½tÅMÕS\Ñ?]Ô?]Ð^aÑ?bÔ?bÐ Ø—’ Ñ"Ô"Ð"Ø—’˜aÑ Ô Ð øÝÐCØ�6”ññ 	ô 	ð 	åˆx‰=Œ=˜AÒÐ¥# g¡,¤,°!Ò"3Ð"3¸¸&¼	ÀWÐ8LÐ8LÝÐi a¨¤iÐiÐiÐiÑjÔjÐjÙð ˆVŒ9˜Ð Ð ¥^°AÑ%6Ô%6Ð ÝÐg a¨¤iÐgÐgÐgÑhÔhÐhÙØð 	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Ñ(Ô(Ð(Ø—’ØNÐRSÑTñVô Vð Và—’ÐVÑWÔWÐWØ��¸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Úitemsizerf   rb   Úfgetdims2_sar‹   r$   r   r   ú<module>r—      sØ   ðð	ð 	ð " " R %Ô(€à€à Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð
 Ð Ð Ð à
€ðð ð ð7ð  :A¸¼¹¼Ô9Kñ!L€	ð$*€	ð	*€ð|ð |ð |ð |ð |r   