diff options
author | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1999-02-16 14:59:09 +0000 |
---|---|---|
committer | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1999-02-16 14:59:09 +0000 |
commit | b7a8832c1f9c2392e12a515d00222b0582e68848 (patch) | |
tree | b1fbaa6c34b71117625bcd292d1a471e0ce900d2 /lib/sbin | |
parent | d434a6f0f401d2880b1cc327ee57aae08266fa81 (diff) |
Order all parameters in common blocks and structures as real, pointer, int .
Note this may cause problems with single precision runs on T3Es or alphas.
Possibly we should have seperate blocks/structures for each type of parameter.
Made sure public parameters are initialised.
Tom
git-svn-id: http://svn.cactuscode.org/flesh/trunk@286 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin')
-rw-r--r-- | lib/sbin/CST | 9 | ||||
-rw-r--r-- | lib/sbin/create_c_stuff.pl | 45 | ||||
-rw-r--r-- | lib/sbin/create_fortran_stuff.pl | 28 |
3 files changed, 56 insertions, 26 deletions
diff --git a/lib/sbin/CST b/lib/sbin/CST index 25ed8db3..551115d0 100644 --- a/lib/sbin/CST +++ b/lib/sbin/CST @@ -511,7 +511,7 @@ int CCTK_BindingsParametersInitialise(void) EOT - foreach $routine (keys %routines) + foreach $routine (keys %routines, "CCTK_BindingsParametersPublic") { print OUT " $routine"."Initialise();\n"; } @@ -536,7 +536,7 @@ int CCTK_BindingsParameterSet(const char *identifier, const char *value) { EOT - foreach $routine (keys %routines) + foreach $routine (keys %routines, "CCTK_BindingsParametersPublic") { print OUT <<EOT; @@ -569,6 +569,11 @@ int CCTK_BindingsParameterGet(const char *identifier, void **value) return -1; } +int CCTK_BindingsParameterHelp(const char *identifier, const char *format, FILE *file) +{ + return -1; +} + EOT close OUT; diff --git a/lib/sbin/create_c_stuff.pl b/lib/sbin/create_c_stuff.pl index 50365261..70373dcd 100644 --- a/lib/sbin/create_c_stuff.pl +++ b/lib/sbin/create_c_stuff.pl @@ -58,7 +58,7 @@ sub CreateParameterBindingFile push(@data,( "struct ", "{")); - foreach $parameter (keys %parameters) + foreach $parameter (order_params(scalar(keys %parameters), %parameters,%parameter_database)) { $type = $parameter_database{"\U$parameters{$parameter} $parameter\E type"}; @@ -353,7 +353,7 @@ sub CreateCStructureParameterHeader push(@data,( "extern struct ", "{")); - foreach $parameter (keys %parameters) + foreach $parameter (order_params(scalar(keys %parameters), %parameters,%parameter_database)) { $type = $parameter_database{"\U$parameters{$parameter} $parameter\E type"}; @@ -391,4 +391,45 @@ sub CreateCStructureParameterHeader return @data; } +sub order_params +{ + local($nparams, @rest) = @_; + local(%parameters); + local(%parameter_database); + local(@float_params) = ();; + local(@int_params) = (); + local(@string_params)= (); + + %parameters = @rest[0..2*$nparams-1]; + %parameter_database = @rest[2*$nparams..$#rest]; + + foreach $parameter (keys %parameters) + { + $type = $parameter_database{"\U$parameters{$parameter} $parameter\E type"}; + + if($type eq "KEYWORD" || + $type eq "STRING" || + $type eq "SENTENCE") + { + push(@string_params, $parameter); + } + elsif($type eq "LOGICAL" || + $type eq "INTEGER") + { + push(@int_params, $parameter); + } + elsif($type eq "REAL") + { + push(@float_params, $parameter); + } + else + { + die("Unknown parameter type '$type'"); + } + + } + + return (@float_params, @string_params, @int_params); +} + 1; diff --git a/lib/sbin/create_fortran_stuff.pl b/lib/sbin/create_fortran_stuff.pl index 430e5402..a0e32a48 100644 --- a/lib/sbin/create_fortran_stuff.pl +++ b/lib/sbin/create_fortran_stuff.pl @@ -130,13 +130,12 @@ sub CreateFortranCommonDeclaration # Create the data - $definition_front = "COMMON /$common_block/"; - $definition = ""; + $definition = "COMMON /$common_block/"; $sepchar = ""; $n = 0; - foreach $parameter (keys %parameters) + foreach $parameter (order_params(scalar(keys %parameters), %parameters,%parameter_database)) { $type = $parameter_database{"\U$parameters{$parameter} $parameter\E type"}; @@ -153,36 +152,21 @@ sub CreateFortranCommonDeclaration push(@data, $line); - # Make up the common block declaration, putting - # strings at the start to avoid misalignment if($aliases == 0) { - if ($type_string =~ /CCTK_STRING/) - { - $definition = "$parameter$sepchar$definition"; - } - else - { - $definition .= "$sepchar$parameter"; - } + $definition .= "$sepchar$parameter"; } else { - if ($type_string =~ /CCTK_STRING/) - { - $definition = "$alias_names[$n]$sepchar$definition"; - } - else - { - $definition .= "$sepchar$alias_names[$n]"; - } + $definition .= "$sepchar$alias_names[$n]"; } + $sepchar = ","; $n++; } - push(@data, $definition_front.$definition); + push(@data, $definition); return @data; } |