diff options
author | tradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2001-05-04 18:49:01 +0000 |
---|---|---|
committer | tradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2001-05-04 18:49:01 +0000 |
commit | a8b248ee10aeb9e357358b5899d173f8c9bc8a21 (patch) | |
tree | 00dbb24e5f8f646602715610644db58a08e05e02 /src/comm | |
parent | 9afeb87f3ccb8edc78c478fda00ba43fee10e633 (diff) |
Check for invalid group/variable indices/names.
This closes PR Cactus 659.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@2143 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/comm')
-rw-r--r-- | src/comm/CactusSync.c | 216 |
1 files changed, 133 insertions, 83 deletions
diff --git a/src/comm/CactusSync.c b/src/comm/CactusSync.c index fb1b2494..c401aab5 100644 --- a/src/comm/CactusSync.c +++ b/src/comm/CactusSync.c @@ -2,15 +2,15 @@ @file CactusSync.c @date Thu Sep 18 14:27:18 1999 @author Gerd Lanfermann - @desc - A collection of SyncGroup routines: Sync a group by the GROUP INDEX, - by the group's VARIABLE NAME, by the group's VARIABLE INDEX. + @desc + A collection of SyncGroup routines: + Sync a group by the GROUP INDEX, by the group's VARIABLE NAME, + by the group's VARIABLE INDEX. - It ends up calling CCTK_SyncGroup(GH,groupname), which is overloaded (currently - by PUGH). - + It ends up calling CCTK_SyncGroup(GH,groupname), + which is overloaded (currently by PUGH). @enddesc - @version $Header$ + @version $Id$ @@*/ #include <stdlib.h> @@ -22,130 +22,180 @@ #include "cctk_Sync.h" static char *rcsid = "$Header$"; - CCTK_FILEVERSION(comm_CactusSync_c) + +/******************************************************************** + ******************** External Routines ************************ + ********************************************************************/ +/* prototypes for external C routines are declared in header cctk_Groups.h + here only follow the fortran wrapper prototypes */ +void CCTK_FCALL CCTK_FNAME (CCTK_SyncGroupI) + (cGH *GH, const int *group); +void CCTK_FCALL CCTK_FNAME (CCTK_SyncGroupWithVar) + (cGH *GH, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME (CCTK_SyncGroupWithVarI) + (cGH *GH, const int *var); + + /*@@ @routine CCTK_SyncGroupI @date Thu Sep 18 14:27:18 1999 @author Gerd Lanfermann - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Synchronizes a group given by its index. + @enddesc + @calls CCTK_GroupName + CCTK_SyncGroup + + @var GH + @vdesc Pointer to Grid Hierachy + @vtype cGH * + @vio in + @endvar + @var group + @vdesc group index + @vtype int + @vio in + @endvar @@*/ -void CCTK_SyncGroupI(cGH *GH, - int groupi) +void CCTK_SyncGroupI (cGH *GH, + int group) { - char *groupname = CCTK_GroupName(groupi); + char *groupname; + - CCTK_SyncGroup(GH,groupname); + groupname = CCTK_GroupName (group); - free(groupname); + if (groupname) + { + CCTK_SyncGroup (GH, groupname); + + free (groupname); + } } -void CCTK_FCALL CCTK_FNAME(CCTK_SyncGroupI) - (cGH *GH, int *groupi) +void CCTK_FCALL CCTK_FNAME (CCTK_SyncGroupI) + (cGH *GH, const int *group) { - CCTK_SyncGroupI(GH, *groupi); + CCTK_SyncGroupI (GH, *group); } - /*@@ @routine CCTK_SyncGroupWithVar @date Thu Sep 18 14:27:18 1999 @author Gerd Lanfermann - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Synchronizes a group which contains the given variable + (given by its name). + @enddesc + @calls CCTK_GroupIndexFromVarI + CCTK_VarIndex + CCTK_SyncGroupI + + @var GH + @vdesc Pointer to Grid Hierachy + @vtype cGH * + @vio in + @endvar + @var varname + @vdesc full variable name + @vtype const char * + @vio in + @endvar @@*/ -void CCTK_SyncGroupWithVar(cGH *GH, - const char *varn) +void CCTK_SyncGroupWithVar (cGH *GH, + const char *varname) { - int groupi; - - groupi = CCTK_GroupIndexFromVarI(CCTK_VarIndex(varn)); - - CCTK_SyncGroupI(GH,groupi); + CCTK_SyncGroupI (GH, CCTK_GroupIndexFromVarI (CCTK_VarIndex (varname))); } -void CCTK_FCALL CCTK_FNAME(CCTK_SyncGroupWithVar) - (cGH *GH, ONE_FORTSTRING_ARG) +void CCTK_FCALL CCTK_FNAME (CCTK_SyncGroupWithVar) + (cGH *GH, ONE_FORTSTRING_ARG) { - ONE_FORTSTRING_CREATE(varn); - CCTK_SyncGroupWithVar(GH,varn); - free(varn); + ONE_FORTSTRING_CREATE (varname); + CCTK_SyncGroupWithVar (GH, varname); + free (varname); } - /*@@ @routine CCTK_SyncGroupWithVarI @date Thu Sep 18 14:27:18 1999 @author Gerd Lanfermann - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Synchronizes a group which contains the given variable + (given by its index). + @enddesc + @calls CCTK_GroupIndexFromVarI + CCTK_SyncGroupI + + @var GH + @vdesc Pointer to Grid Hierachy + @vtype cGH * + @vio in + @endvar + @var var + @vdesc variable index + @vtype int + @vio in + @endvar @@*/ -void CCTK_SyncGroupWithVarI(cGH *GH, - int vari) +void CCTK_SyncGroupWithVarI (cGH *GH, + int var) { - int groupi; - - groupi = CCTK_GroupIndexFromVarI(vari); - - CCTK_SyncGroupI(GH,groupi); + CCTK_SyncGroupI (GH, CCTK_GroupIndexFromVarI (var)); } -void CCTK_FCALL CCTK_FNAME(CCTK_SyncGroupWithVarI) - (cGH *GH, int *vari) +void CCTK_FCALL CCTK_FNAME (CCTK_SyncGroupWithVarI) + (cGH *GH, const int *var) { - CCTK_SyncGroupWithVarI(GH,*vari); + CCTK_SyncGroupWithVarI (GH, *var); } + /*@@ @routine CCTK_SyncGroupsI @date Thu Jan 27 18:00:15 2000 @author Tom Goodale - @desc - Synchronises a list of groups by group index. - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Synchronises a list of groups given by their group indices. + @enddesc + @calls CCTK_SyncGroupI + + @var GH + @vdesc Pointer to Grid Hierachy + @vtype cGH * + @vio in + @endvar + @var n_groups + @vdesc number of groups to synchronize + @vtype int + @vio in + @endvar + @var groups + @vdesc list of group indices + @vtype const int * + @vio in + @endvar + + @returntype int + @returndesc + 0 + @endreturndesc @@*/ -int CCTK_SyncGroupsI(cGH *GH, - int n_groups, - int *groups) +int CCTK_SyncGroupsI (cGH *GH, + int n_groups, + const int *groups) { int i; - for(i = 0; i < n_groups; i++) + + for (i = 0; i < n_groups; i++) { - CCTK_SyncGroupI(GH, groups[i]); + CCTK_SyncGroupI (GH, groups[i]); } - return 0; + return (0); } - |