diff options
author | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1998-11-20 18:01:28 +0000 |
---|---|---|
committer | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1998-11-20 18:01:28 +0000 |
commit | f7cf820d62706b6d0ad6e0333c17fe5bc194ba85 (patch) | |
tree | 58d8b47d9256c6827050eff76cc4730e647eea13 /lib/sbin | |
parent | d82729d03fafb73bfc5175563618f687b498c3c4 (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.pl | 35 | ||||
-rw-r--r-- | lib/sbin/parameter_parser.pl | 39 |
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 |