+
    eiR&  c                   s    R t R^
R tRt^ RIt^RIHtHt ^RI5 ^RI	H
t
Ht / tR tR]P                  ! 4       P                  ,          tR	tR
tR tR# )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_rmbadname1c                 s    \        V 4      '       d   V .# \        V 4      '       g   . # . pV R ,           F9  p\        V4      '       d   VP                  V4       K'  V\        V4      ,           pK;  	  V# )body)Zismodulehasbodyappendfindf90modules)mretbs   &  >/usr/lib64/python3.14/site-packages/numpy/f2py/f90mod_rules.pyr   r      s_    {{s
1::	
CvYYA;;JJqM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                 s.   ^RI Hp R. R. R. RRR.RR	R
RR
/RR.R. /pR.pV3R lpR.pV3R lp\        V 4      p\        V 4       E
F  p. . . . VR,          .. 3w  rrr. p. p. p\	        V4      '       d)   VR,           F  pVP                  VR,          4       K  	  VR,          P                  4        Fs  pVR,          V,          pVV9  g   K  \        V4      '       g   K/  \        \        \        4      ! V4      '       d   KQ  VP                  V4       VP                  V4       Ku  	  \        RVR,           R24       \        V4      ^ 8X  d8   \        V4      ^8X  d(   VR,          V9   d   \        RVR,           R24       EKB  VR,          V9   d+   \        V4      '       d   \        RVR,           R24       EKz  VR,          V9   d+   \        V4      '       d   \        RVR,           R24       EK  V'       d   \        RRP                  V4       R
24       R.pV3R lpR.pV3R lp\         P"                  ! V4      pV! RVR,          ,          4       V! RVR,          ,          4       \%        V4      '       d9   VR ,          p\'        V\(        4      '       d   R
P                  V4      pV! V4       V'       d	   V! R!4       V EF  pVR,          V,          pVP                  V4       \         P*                  ! V4      p\         P,                  V,          p\         P.                  ! VV4      pVR",          P1                  R#R$4      P3                  4       pVP1                  R%R$4      P3                  4       pV'       g   R$p\4        pV! R&\7        V4      : R'VR(,          : R)V: R*V: R+\         P8                  ! V4      : R,24       V! R-\         P:                  ! VV4      ,          4       \%        V4      '       d<   VR ,          p\'        V\(        4      '       d   R
P                  V4      pV! R.V 24       \=        V4      '       EdD   V
P                  R/VR,           R0V 24       VP                  V
Rs,          4       V	P                  R1V R224       VP                  R34       V! R4VR,           R5V R624       V! R7V
Rs,           R824       V! R9VR,           R:\7        V4       R
24       V! R;4       V^ ,          \>        ,           V^ &   \A        ^\C        VR(,          4      ^,           4      pT! R<R=P                  V U u. uF  p R>V ,          NK  	  up 4      ,          4       V^ ,          V,           V^ &   V! R?V
Rs,           24       EK  V
P                  V4       V	P                  R@V 24       VP                  RA4       V! R4VR,           RBV R624       EK  	  V'       d	   V! RC4       \	        V4      '       Ed:   VR,           EF+  p\E        V4      '       g#   \        RDVRE,           RVR,           R
24       K7  VP                  VR,           RF24       VR,          VRG&   VPG                  V4      w  p!p"\I        V4      '       da   V^ ,          V",           V^ &   V
P                  RHVR,           RIVR,           24       VP                  \J        PL                  ! V^RJ7      4       MV"'       da   V^ ,          V",           V^ &   V
P                  RHVR,           RIVR,           24       VP                  \J        PN                  ! V^RJ7      4       M0V
P                  VR,          4       VP                  V
Rs,          4       . V!RK&   \Q        V!V4      p#. V#R&   . V#RL&   \S        VV#4      pV! R&VR,          : RMVR,          : RIVR,          : RNVR,          : RIVR,          : R,24       V	P                  R@VR,           24       VP                  R@4       V! R4VR,           RBVR,           R624       EK.  	  V! RO4       V! RP4       RQVR,          : RRR=P                  V	4      : RSV^ ,          : 2V^ &   RIVR,          9   d   RTp$MRp$V! RUV$: RVVR,          : RWVR,          PU                  4       : RXR=P                  V4      : RY2	4       V! RZVR,          ,          4       V! R[V$: RVVR,          : RWVR,          PU                  4       : R\VR,          : R]2	4       V! R^4       VR,          V,           V,           VR&   R_VR,          : R`VR,          : RaVR,          : RY2.VR,          ,           VR&   V! R4       V! RbVR,           Rc24       V'       d(   \W        V4       F  p%V! R9VR,           RdV% 24       K  	  V'       d(   V! RP                  Re.V,           4      4       V! Rf4       V! Rg4       V'       d   \W        V4       F  p%V! RhV% 24       K  	  V! RiR=P                  \W        V
4      4       Rj24       V! RkVR,           R
24       V! R
P                  VR,          4      P1                  RlRm4      4       . VR&   VR,          P                  RnVR,           RoR=P                  \W        V4      4       Rp24       E
K  	  RVRq&   . VRr&   . VRL&   V^ ,          VR&   \        VR,          4      ^8:  d   RVR&   W#^ ,          3# u up i )ti   )rulesZf90modhooksZinitf90modhooksr   ZneedF_FUNCzarrayobject.hZseparatorsforZ	includes0
ZincludesZdocsz"Fortran 90/95 modules:\n"Zlatexdoc c                 (    V^ ,           RV  2V^ &   R# )    z
      N ZlineZs   &&r   faddZbuildhooks.<locals>.fadd[   s    A$xv&!r   c                 r   r   r   Nr   r   r   r   daddZbuildhooks.<locals>.dadd_   s    A$r$ !r   ZnameZvarsz'		Constructing F90 module support for "z"...
z			Skipping z7 since there are no public vars/func in this module...
z5 since it is in 'use' and contains a common block...
z5 since it is in 'use' and contains a derived type...
z		  Variables: Z c                 r   r   r   r   r   r   caddZbuildhooks.<locals>.cadd       dV2dV$AaDr   c                 r   r   r   r   r   r   iaddZbuildhooks.<locals>.iadd   r   r   z'static FortranDataDef f2py_%s_def[] = {z.\subsection{Fortran 90/95 module \texttt{%s}}
notez\begin{description}Zdimsr   z-1Z:z	{"z",Zrankz,{{z}},z, z},z\item[]{{}\verb@%s@{}}z--- Zf2py_Z	_getdims_zvoid (*z/)(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;zsubroutine z(r,s,f2pysetdata,flag)zuse z, only: d => zinteger flag
z allocate(d(%s))
Z,zs(%s)zend subroutine zchar *zchar*z_def[i_f2py++].data = z\end{description}z"f90mod_rules.buildhooks: skipping Zblockz()Z
modulenameZ	f2pywrap_Z_)Z	signatureZexternroutinesZdocshortz4",-1,{{-1}},0,0,NULL,(void *)f2py_rout_#modulename#_z,doc_f2py_rout_#modulename#_z	{NULL}
};
Z}zstatic void f2py_setup_Z(z) {
	int i_f2py=0;Z	F_FUNC_USzextern void z	(f2pyinitz	,F2PYINITz)(void (*)(z));z static void f2py_init_%s(void) {Z	z)(f2py_setup_z);z}
z	PyDict_SetItemString(d, "z", PyFortranObject_New(f2py_z_def,f2py_init_zsubroutine f2pyinitz(f2pysetupfunc)z	, only : Z	interfacezend interfacezexternal f2pysetupfuncz	external zcall f2pysetupfunc(Z)zend subroutine f2pyinitz\subsection{z\subsubsection{z"	z --- Z"Zroutine_defsdoc),r   r   Zgetuseblocksr   r   r   ZkeysZ
isvariableZl_orZisintent_hideZ	isprivateZoutmessZlenZcontainscommonZcontainsderivedtypesZjoinr    Zmodsign2mapZhasnoteZ
isinstanceZlistZgetctypeZ
c2capi_mapZ
getarrdimsZreplaceZstrip	fgetdims2r   Z
get_elsizeZgetarrdocsignZisallocatable	fgetdims1ZrangeZintZ	isroutineZbuildapiZ
isfunctionr   ZcreatefuncwrapperZcreatesubrwrapperZ
applyrulesZ
dictappendZupperr   )&Zpymodr   r
   Zfhooksr   r   r   Zusenamesr	   ZsargsZfargsZefargsZmodobjsZnotvarsZonlyvarsZsargspZifargsZmfargsr   ZnZvarZchooksr   Zihooksr   Zvrdr   ZctZatZdmZdmsZuse_fgetdims2ZiZapiZwrapZarr   Zas&   &                                     r   
buildhooksr"   R   s	   "/VRHo.[$
DA12r	C
 TF '$C ! E"HE";=r2rfIL<8fw1::vYYqy) 6!AF)A,C Z__tMS\?]^a?b?b"a  " 	<QvYKwOPx=A#g,!"3&	W8Loai[0hij V9 ^A%6%6oai[0fghV9 %9!%<%<oai[0fgh'(:';2>? 	% 	% ##A&6!F)DE@AfINO1::V9D$%%yyJ'(AF)A,CNN1##C(B%%b)B%%a-BV*$$S$/557C++c4(..0C%M!!$bjj#r&&s+- . +))!S13 4s||6{dD))99T?DtD6]#S!!uQvYKy<=eBi(aS OPRVWwqyk)?s!DE{59+-CDEtAfI;mOA4F3GrJK%&"1I	1q	As2f:23)hhS9S!S9:< ="1I5q	uRyk23QvaS\*g&wqyk)?s!DES T %&1::vYY || ))*7Aai[D E!F)B/0"#F),!NN1-	Ta== &q	D 0F1ILL9QvYKq6!DEMM)"="=a1"MN &q	D 0F1ILL9QvYKq6!DEMM!33ACE LL6+MM%),(*$%S)6
!#: b) &		1V99aii6AfIIO P vai[12h'wqyk)?&	{!LM? @ 	S	fIIsxxq	3q	!F) FF&		1V9??#4chhv6FH 	I/1V9=>&		1V9??#4aiiA 	BU /&86AMfIIqyy!F))#- ".034E0F"GR"1V9+_=>#F+tAfI;is34 ,;-&012!%&#F+y_% ,"388N5,A#B"C1EF&qyk45TYYs:'///1 	2 JFT!F)E#((>';R2S1TTVWXE #H CCJC
O!fC
O
3v;1Fq	>o  :s   lr   )Z__doc__Z__version__Zf2py_versionZnumpyZnpr   r    r   ZauxfuncsZcrackfortranr   r   Zoptionsr   ZintpZitemsizer!   r    Zfgetdims2_sar"   r   r   r   <module>r#      sg   	 ""R(  "
  9
7  :<9K9K!L	$*		*{r   