ó °¿v]c @` sq d Z d d l m Z m Z m Z d d g Z d d l Z d d l Z d d l Z e j d e j ƒ Z e j d e j ƒ Z e j d e j ƒ Z d „ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z d „ Z d „ Z e j d ƒ Z d „ Z d „ Z e j d ƒ Z d „ Z d „ Z e j d e j ƒ Z d „ Z d „ Z e d ƒ Z d „ Z e d k rme ƒ n d S( sÆ process_file(filename) takes templated file .xxx.src and produces .xxx file where .xxx is .pyf .f90 or .f using the following template rules: '<..>' denotes a template. All function and subroutine blocks in a source file with names that contain '<..>' will be replicated according to the rules in '<..>'. The number of comma-separated words in '<..>' will determine the number of replicates. '<..>' may have two different forms, named and short. For example, named:
where anywhere inside a block '
' will be replaced with
'd', 's', 'z', and 'c' for each replicate of the block.
<_c> is already defined: <_c=s,d,c,z>
<_t> is already defined: <_t=real,double precision,complex,double complex>
short:
, a short form of the named, useful when no
appears inside
a block.
In general, '<..>' contains a comma separated list of arbitrary
expressions. If these expression must contain a comma|leftarrow|rightarrow,
then prepend the comma|leftarrow|rightarrow with a backslash.
If an expression matches '\