summaryrefslogtreecommitdiff
path: root/lib/sbin/config_parser.pl
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-01-20 14:11:25 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-01-20 14:11:25 +0000
commit327ebf1d07812567ea5697e1e6c7d8d0042686e3 (patch)
tree5a44f5f154c6d4f4bc20398d64230bbeef597fc3 /lib/sbin/config_parser.pl
parent78b6007ba34cf9300408a40f8dce92aeb6ae9e81 (diff)
Generalised routine to create a parameter binding file to do it for any
list of parameters. Tom git-svn-id: http://svn.cactuscode.org/flesh/trunk@93 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin/config_parser.pl')
-rw-r--r--lib/sbin/config_parser.pl37
1 files changed, 20 insertions, 17 deletions
diff --git a/lib/sbin/config_parser.pl b/lib/sbin/config_parser.pl
index f09b8bba..fb36a439 100644
--- a/lib/sbin/config_parser.pl
+++ b/lib/sbin/config_parser.pl
@@ -231,6 +231,7 @@ sub CreateParameterBindings
local(%interface_database);
local($start_dir);
local($line);
+ local(%these_parameters);
%parameter_database = @rest[0..(2*$n_param_database)-1];
%interface_database = @rest[2*$n_param_database..$#rest];
@@ -249,7 +250,10 @@ sub CreateParameterBindings
}
chdir "Parameters";
- @data = &CreatePublicParamBindings("CCTK_BindingsParametersPublic", $n_param_database, @rest);
+
+ %these_parameters = &get_public_parameters(%parameter_database);
+
+ @data = &CreateParameterBindingFile("CCTK_BindingsParametersPublic", "PUBLIC_PARAMETER_STRUCT", scalar(keys %these_parameters), %these_parameters, %parameter_database);
open (OUT, ">Public.c") || die "Cannot open Public.c";
@@ -378,20 +382,17 @@ EOT
-sub CreatePublicParamBindings
+sub CreateParameterBindingFile
{
- local($prefix, $n_param_database, @rest) = @_;
+ local($prefix, $structure, $n_parameters, @rest) = @_;
local(%parameter_database);
- local(%interface_database);
local($line,@data);
- local(%public_parameters);
+ local(%parameters);
local($type, $type_string);
local(@data);
- %parameter_database = @rest[0..2*$n_param_database-1];
- %interface_database = @rest[2*$n_param_database..$#rest];
-
- %public_parameters = &get_public_parameters(%parameter_database);
+ %parameters = @rest[0..2*$n_parameters-1];
+ %parameter_database = @rest[2*$n_parameters..$#rest];
# Header Data
$line = "\#include <stdio.h>";
@@ -410,28 +411,28 @@ sub CreatePublicParamBindings
push(@data,( "struct ", "{"));
- foreach $parameter (keys %public_parameters)
+ foreach $parameter (keys %parameters)
{
- $type = $parameter_database{"\U$public_parameters{$parameter} $parameter\E type"};
+ $type = $parameter_database{"\U$parameters{$parameter} $parameter\E type"};
$type_string = &get_c_type_string($type);
-
+
$line = $type_string ." " .$parameter . ";";
push(@data, $line);
}
- push(@data, "} PUBLIC_PARAM_STRUCT;");
+ push(@data, "} $structure;");
push(@data, "");
# Initialisation subroutine
push(@data, ("int $prefix"."Initialise(void)", "{"));
- foreach $parameter (keys %public_parameters)
+ foreach $parameter (keys %parameters)
{
- push(@data, &set_parameter_default("PUBLIC_PARAM_STRUCT",$public_parameters{$parameter},
+ push(@data, &set_parameter_default($structure,$parameters{$parameter},
$parameter, %parameter_database));
push(@data, "");
@@ -450,9 +451,9 @@ sub CreatePublicParamBindings
push(@data, (" int retval;", " retval = 1;", ""));
- foreach $parameter (keys %public_parameters)
+ foreach $parameter (keys %parameters)
{
- push(@data, &set_parameter_code("PUBLIC_PARAM_STRUCT",$public_parameters{$parameter},
+ push(@data, &set_parameter_code($structure,$parameters{$parameter},
$parameter, %parameter_database));
push(@data, "");
@@ -598,6 +599,8 @@ sub set_parameter_default
$default = $parameter_database{"\U$implementation $parameter\E default"};
$type = $parameter_database{"\U$implementation $parameter\E type"};
+ print "Getting type of $parameter from thorn $parameters{$parameter} - type is ..$type... in defaults\n";
+
$type_string = &get_c_type_string($type);
if($type_string eq "char *")