
    Ph%                         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      bC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/f2py/f90mod_rules.pyr   r   "   sW    {s
1:	
CvY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                 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    Q4&!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        tT*AaDr   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
 TF -$C 'E";=r2rfIL<8ufgw1:vYqy) 6!AF)A,C +I4y+I#+N"a 	 "
 	C6 	+sxx/ABC 	+ 	+ ##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j#r&&s+- . +))!S13 4s|6{dD)99T?DX&'S!QvYBCeBi(NRSTVVWQvYJK:eBiHIi!35 6%&"1I	1q	As2f:23)hhS9S!S9:< ="1I5q	(E"I67QZ1-.g&QvYJKU V %&1:vY | ))*7Aai[D Ev634"#F),!NN1-	Ta= &q	D 0F1ILLQvY&	!JKMM)"="=a1"MN$*1I$4q	6AfI%NO%77QGI QvY/eBi0(*$%S)6
!#: b) &	1V9ai6AfIO P Z1V956h'i6, -A D 	S	fIsxxq	3q	!F) FF&	1V9??#4chhv6FH 	I/1V9=>&	1V9??#4aiA 	BU /&86AMfIqy!F)#- ".034E0F"GR3qyAB#F+AfIq9: ,;-&012!%&#F+]a() ,%.2G)HIJ*ai89TYYs:'///1 	2 JFai.1hh~g7N.OQ 	Rs #x CCJC
O!fC
O
3v;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9K9K!L	$*		*qr   