diff options
author | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1998-12-03 16:47:35 +0000 |
---|---|---|
committer | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1998-12-03 16:47:35 +0000 |
commit | 91171f3ad715d9c8ed3917126fda2447733e8c47 (patch) | |
tree | b4515ef2b370a825a4d3f9e28894c928794350cd /lib/sbin/GridFuncStuff.pl | |
parent | abf72263cadff01dd677bb2ae460b72c24853850 (diff) |
Created functions to create the gridfuncs.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@36 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin/GridFuncStuff.pl')
-rw-r--r-- | lib/sbin/GridFuncStuff.pl | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/lib/sbin/GridFuncStuff.pl b/lib/sbin/GridFuncStuff.pl new file mode 100644 index 00000000..9f3350b8 --- /dev/null +++ b/lib/sbin/GridFuncStuff.pl @@ -0,0 +1,110 @@ +#! /usr/bin/perl + +sub CreateGroups +{ + local(%interface_database) = @_; + local(@interfaces); + local(%thorns); + local(@group_initialisers); + local(@indata); + + + @interfaces = split(" ", $interface_database{"IMPLEMENTATIONS"}); + + foreach $interface (@interfaces) + { + @indata = &create_interface_group_initialisers($interface, %interface_database); + + push(@group_initialisers, @indata); + + foreach $thorn (split(" ",$interface_database{"IMPLEMENTATION \U$interface\E THORNS"})) + { + $thorns{"\U$thorn\E"} = 1; + } + } + + foreach $thorn (keys %thorns) + { + + @indata = &create_thorn_group_initialisers($thorn, "PRIVATE", %interface_database); + + push(@group_initialisers, @indata); + + } + + @group_initialisers = &sort_groups(@group_initialisers); + + return @group_initialisers; +} + +sub create_interface_group_initialisers +{ + local($interface, %interface_database) = @_; + local($thorn); + local(@definitions); + local(@indata); + + + $interface_database{"IMPLEMENTATION \U$interface\E THORNS"} =~ m:([^ ]+):; + + $thorn = $1; + + @indata = &create_thorn_group_initialisers($thorn, "PUBLIC", %interface_database); + + push(@definitions, @indata); + + @indata = &create_thorn_group_initialisers($thorn, "PROTECTED", %interface_database); + + push(@definitions, @indata); + + return @definitions; + +} + +sub create_thorn_group_initialisers +{ + local($thorn, $block, %interface_database) = @_; + local(@definitions); + local($base_name); + local($group); + local($variable,@variables); + if($block eq "PRIVATE") + { + $base_name = "thorn:$thorn"; + } + else + { + $base_name = $interface_database{"\U$thorn\E IMPLEMENTS"}; + } + + foreach $group (split(" ", $interface_database{"\U$thorn $block GROUPS"})) + { + @variables = split(" ", $interface_database{"\U$thorn GROUP $group\E"}); + + $line = " CCTK_CreateGroup(\"\U$base_name:$group\E\",\n" + . " \"" . $interface_database{"\U$thorn GROUP $group\E GTYPE"} . "\",\n" + . " \"" . $interface_database{"\U$thorn GROUP $group\E VTYPE"} . "\",\n" + . " ". scalar(@variables); + foreach $variable (@variables) + { + $line .= ",\n \"\U$variable\E\""; + } + + $line .= ");\n\n"; + + push(@definitions, $line); + } + + return @definitions; + + +} + +sub sort_groups +{ + local(@group_initialisers) = @_; + + return @group_initialisers; +} + +1; |