summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sbin/CST9
-rw-r--r--lib/sbin/create_c_stuff.pl45
-rw-r--r--lib/sbin/create_fortran_stuff.pl28
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;
}