summaryrefslogtreecommitdiff
path: root/lib/sbin/interface_parser.pl
diff options
context:
space:
mode:
authorrideout <rideout@17b73243-c579-4c4c-a9d2-2d5706c11dac>2003-05-02 21:41:14 +0000
committerrideout <rideout@17b73243-c579-4c4c-a9d2-2d5706c11dac>2003-05-02 21:41:14 +0000
commit1b0f54a2159b752ea61165f49e82280ff1c91c65 (patch)
tree3208ddfb063d131cbd710b813e37049529b0cc7f /lib/sbin/interface_parser.pl
parentd8b34116a70a5ddf782ede00f3dfc9a4100ab15d (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.pl45
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)
{