summaryrefslogtreecommitdiff
path: root/lib/sbin
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1998-11-20 18:01:28 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1998-11-20 18:01:28 +0000
commitf7cf820d62706b6d0ad6e0333c17fe5bc194ba85 (patch)
tree58d8b47d9256c6827050eff76cc4730e647eea13 /lib/sbin
parentd82729d03fafb73bfc5175563618f687b498c3c4 (diff)
Stores a list of public parameters.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@26 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin')
-rw-r--r--lib/sbin/config_parser.pl35
-rw-r--r--lib/sbin/parameter_parser.pl39
2 files changed, 72 insertions, 2 deletions
diff --git a/lib/sbin/config_parser.pl b/lib/sbin/config_parser.pl
index 74df21b4..bab74ffb 100644
--- a/lib/sbin/config_parser.pl
+++ b/lib/sbin/config_parser.pl
@@ -44,7 +44,6 @@ require "lib/sbin/interface_parser.pl";
%parameter_database = create_parameter_database(%thorns);
-
@parameter_structure = &create_c_parameter_structure(%parameter_database);
@@ -60,7 +59,7 @@ require "lib/sbin/interface_parser.pl";
# print "$line\n";
#}
-#&print_parameter_database(%parameter_database);
+&print_parameter_database(%parameter_database);
#&print_interface_database(%interface_database);
@@ -93,8 +92,10 @@ require "lib/sbin/interface_parser.pl";
# print "$line\n";
#}
+
@implementations = (keys %thorns);
+
@fortran_module_file = &create_fortran_module_file(scalar(@implementations),@implementations,%parameter_database);
foreach $line (@fortran_module_file)
@@ -102,6 +103,12 @@ foreach $line (@fortran_module_file)
print "$line\n";
}
+%public_parameters = &get_public_parameters(%parameter_database);
+
+foreach $param (keys %public_parameters)
+{
+ print "param $param from " . $public_parameters{"$param"}. "\n";
+}
sub create_fortran_module_file
{
@@ -528,3 +535,27 @@ sub create_fortran_parameter_type_declaration
return @type_declaration;
}
+
+
+sub get_public_parameters
+{
+ local(%parameter_database) = @_;
+ local(%public_parameters);
+ local($param);
+
+ foreach $param (split(/ /,$parameter_database{"PUBLIC PARAMETERS"}))
+ {
+ if($param =~ m/(.*)::(.*)/)
+ {
+ $public_parameters{"$2"} = $1;
+ }
+ }
+
+ return %public_parameters;
+}
+
+
+
+
+
+
diff --git a/lib/sbin/parameter_parser.pl b/lib/sbin/parameter_parser.pl
index be361d93..027c5c33 100644
--- a/lib/sbin/parameter_parser.pl
+++ b/lib/sbin/parameter_parser.pl
@@ -41,9 +41,48 @@ sub create_parameter_database
}
+ @parameter_data = &cross_index_parameters(scalar(keys %implementations), (keys %implementations), @parameter_data);
+
return @parameter_data;
}
+sub cross_index_parameters
+{
+ local($n_implementations, @indata) = @_;
+ local(@implementations);
+ local(%parameter_database);
+ local(@module_file);
+ local($line);
+ local(@data);
+
+ @implementations = @indata[0..$n_implementations-1];
+ %parameter_database = @indata[$n_implementations..$#indata];
+
+ foreach $imp (@implementations)
+ {
+ foreach $parameter (split(/ /, $parameter_database{"\U$imp\E PUBLIC variables"}))
+ {
+ if($public_parameters{"\U$parameter\E"})
+ {
+ print STDERR "Duplicate public parameter $parameter\n";
+ print STDERR "Parameter defined in $imp and in " .
+ $public_parameters{"\Uparameter\E"};
+ die("****Fatal error***");
+ }
+ else
+ {
+ $public_parameters{"\Uparameter\E"} = "$imp";
+
+ $parameter_database{"PUBLIC PARAMETERS"} .= "$imp\::$parameter ";
+ }
+ }
+ }
+
+ return %parameter_database;
+}
+
+
+
#/*@@
# @routine read_file