diff options
author | rideout <rideout@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2003-05-02 21:41:14 +0000 |
---|---|---|
committer | rideout <rideout@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2003-05-02 21:41:14 +0000 |
commit | 1b0f54a2159b752ea61165f49e82280ff1c91c65 (patch) | |
tree | 3208ddfb063d131cbd710b813e37049529b0cc7f /lib/sbin/interface_parser.pl | |
parent | d8b34116a70a5ddf782ede00f3dfc9a4100ab15d (diff) |
Support for new(er) aliased function declaration format:
<CCTK_TYPE> FUNCTION <function name> (<CCTK_TYPE> [ARRAY] IN|OUT|INOUT
<argument name>)
by Ian Hawke, with some minor fixes/enhancements by myself.
void functions can now be declared as "SUBROUTINE".
git-svn-id: http://svn.cactuscode.org/flesh/trunk@3208 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin/interface_parser.pl')
-rw-r--r-- | lib/sbin/interface_parser.pl | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/lib/sbin/interface_parser.pl b/lib/sbin/interface_parser.pl index ae7b2d88..776fb101 100644 --- a/lib/sbin/interface_parser.pl +++ b/lib/sbin/interface_parser.pl @@ -776,43 +776,24 @@ sub parse_interface_ccl $rettype = $1; $funcname = $2; $rest = $3; -# print "\n\n".$rettype." ".$funcname." ".$rest."\n\n"; -# if($rest =~ m/(.*)\s*PROVIDED-BY\s*(.+)/i) -# { -# $funcargs = $1; -# $provided_by = $2; - -# if($provided_by =~ m/(.*)\s*LANGUAGE\s*(.+)/i) -# { -# $provided_by = $1; -# $provided_by_language = $2; -# } -# else -# { -# $provided_by_language = "Fortran"; -# $provided_by_language = "C"; -# $message = "The providing function $provided_by in thorn $thorn does not have a specified language. Please add, e.g., \"LANGUAGE C\""; -# &CST_error(0,$message,"",__LINE__,__FILE__); - -# } -# } -# else -# { - $funcargs = $rest; - $provided_by = ""; -# } + + $funcargs = $rest; $interface_db{"\U$thorn FUNCTIONS\E"} .= "${funcname} "; $interface_db{"\U$thorn FUNCTION\E $funcname ARGS"} .= "${funcargs} "; $interface_db{"\U$thorn FUNCTION\E $funcname RET"} .= "${rettype} "; + } + elsif ($line =~ m/^\s*SUBROUTINE\s*([a-zA-Z_0-9]+)\s*\((.*)\)\s*$/i) + { + $rettype = "void"; + $funcname = $1; + $rest = $2; - if($provided_by ne "") - { - $interface_db{"\U$thorn PROVIDES FUNCTION\E"} .= "$funcname "; - $interface_db{"\U$thorn PROVIDES FUNCTION\E $funcname WITH"} .= "$provided_by "; - $interface_db{"\U$thorn PROVIDES FUNCTION\E $funcname LANG"} .= "$provided_by_language "; -# print "Parsed $thorn:$funcname:$provided_by_language\n"; - } + $funcargs = $rest; + + $interface_db{"\U$thorn FUNCTIONS\E"} .= "${funcname} "; + $interface_db{"\U$thorn FUNCTION\E $funcname ARGS"} .= "${funcargs} "; + $interface_db{"\U$thorn FUNCTION\E $funcname RET"} .= "${rettype} "; } elsif ($line =~ m/^\s*(CCTK_)?(CHAR|BYTE|INT|INT2|INT4|INT8|REAL|REAL4|REAL8|REAL16|COMPLEX|COMPLEX8|COMPLEX16|COMPLEX32)\s*(([a-zA-Z]+[a-zA-Z_0-9]*)(\[([^]]+)\])?)\s*(.*)\s*$/i) { |