summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sbin/CreateParameterBindings.pl14
-rw-r--r--lib/sbin/create_c_stuff.pl21
2 files changed, 26 insertions, 9 deletions
diff --git a/lib/sbin/CreateParameterBindings.pl b/lib/sbin/CreateParameterBindings.pl
index 52862243..f3c55faa 100644
--- a/lib/sbin/CreateParameterBindings.pl
+++ b/lib/sbin/CreateParameterBindings.pl
@@ -202,7 +202,9 @@ sub CreateParameterBindings
push(@data, " DECLARE_PRIVATE_\U$thorn\E_STRUCT_PARAMS \\")
if($header_files{"\U$thorn\E PRIVATE"});
- my $delim = ' ';
+ # double this loop, add #defines for RESTRICTED_STRUCT.$realname, set these via #ifdef, use these #defines
+
+ my @data2;
foreach $friend (split(' ',$rhparameter_db->{"\U$thorn\E SHARES implementations"}))
{
$rhinterface_db->{"IMPLEMENTATION \U$friend\E THORNS"} =~ m:([^ ]*):;
@@ -223,12 +225,18 @@ sub CreateParameterBindings
$varprefix = ' const *';
}
- push(@data, " CCTK_DECLARE_INIT ($type_string$varprefix const, $parameter, RESTRICTED_\U$friend\E_STRUCT.$realname); \\");
- $delim = ',';
+ #push(@data, " CCTK_DECLARE_INIT ($type_string$varprefix const, $parameter, RESTRICTED_\U$friend\E_STRUCT.$realname); \\");
+ push(@data, " CCTK_DECLARE_INIT ($type_string$varprefix const, $parameter, CCTK_PARAMETER__${friend_thorn}__${realname}); \\");
+ push(@data2,
+ "#ifndef CCTK_PARAMETER__${friend_thorn}__${realname}\n" .
+ "# define CCTK_PARAMETER__${friend_thorn}__${realname} RESTRICTED_\U$friend\E_STRUCT.$realname\n" .
+ "#endif");
}
}
push(@data, '');
+ push(@data, @data2);
+ push(@data, '');
push(@data, "#endif /* _\U$thorn\E_PARAMETERS_H_ */");
push(@data, "\n"); # workaround for perl 5.004_04 to add a trailing newline
diff --git a/lib/sbin/create_c_stuff.pl b/lib/sbin/create_c_stuff.pl
index 3277c15f..71087362 100644
--- a/lib/sbin/create_c_stuff.pl
+++ b/lib/sbin/create_c_stuff.pl
@@ -175,7 +175,13 @@ sub CreateCStructureParameterHeader
my($line,@data);
my(%parameters);
my($type, $type_string);
- my(@definition);
+ my(@definition, @definition2);
+
+ # determine thorn name from structure name
+ # TODO: pass thorn name explicitly
+ my $thorn = $structure;
+ $thorn =~ s{^[^_]*_}{}; # remove PRIVATE_ or RESTRICTED_ prefix
+ $thorn =~ s{_STRUCT$}{};
# Create the structure
push(@data, '#ifdef __cplusplus');
@@ -185,7 +191,6 @@ sub CreateCStructureParameterHeader
push(@data, '');
push(@data, 'extern struct');
push(@data, '{');
- my $delim = ' ';
foreach $parameter (&order_params($rhparameters, $rhparameter_db))
{
@@ -206,8 +211,12 @@ sub CreateCStructureParameterHeader
my $realname = $rhparameter_db->{"\U$rhparameters->{$parameter} $parameter\E realname"};
push(@data, " $type_string $realname$suffix;");
- push(@definition, " CCTK_DECLARE_INIT ($type_string$varprefix const, $parameter, $structure.$realname); \\");
- $delim = ',';
+ #push(@definition, " CCTK_DECLARE_INIT ($type_string$varprefix const, $parameter, $structure.$realname); \\");
+ push(@definition, " CCTK_DECLARE_INIT ($type_string$varprefix const, $parameter, CCTK_PARAMETER__${thorn}__$realname); \\");
+ push(@definition2,
+ "#ifndef CCTK_PARAMETER__${thorn}__$realname\n" .
+ "# define CCTK_PARAMETER__${thorn}__$realname $structure.$realname\n" .
+ "#endif");
}
# Some compilers don't like an empty structure.
@@ -226,8 +235,8 @@ sub CreateCStructureParameterHeader
push(@data, "#define DECLARE_${structure}_PARAMS \\");
push(@data, @definition);
-
- push(@data, "\n"); # workaround for perl 5.004_04 to add a trailing newline
+ push(@data, "\n");
+ push(@data, @definition2);
return join ("\n", @data);
}