From 5c06ee788482b032fc3c45e62dacd055c727d8b6 Mon Sep 17 00:00:00 2001 From: tradke Date: Mon, 28 May 2001 15:28:21 +0000 Subject: Use const pointers wherever possible. Also removed volatile qualifiers for some pointers which were needed on the Hitachi. The compiler bug there seems to be fixed now. git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGHInterp/trunk@15 1c20744c-e24a-42ec-9533-f5004cb800e5 --- src/Interpolate.c | 23 ++++++++------- src/Operator.c | 71 ++++++++++++++++++++++---------------------- src/Startup.c | 86 ++++++++++++++++++++++++++---------------------------- src/pughInterpGH.h | 44 ++++++++++++++-------------- 4 files changed, 111 insertions(+), 113 deletions(-) diff --git a/src/Interpolate.c b/src/Interpolate.c index dc6bc5a..b387b19 100644 --- a/src/Interpolate.c +++ b/src/Interpolate.c @@ -18,13 +18,14 @@ @@*/ #include +#include #include "cctk.h" #include "cctk_Parameters.h" #include "pughInterpGH.h" /* the rcs ID and its dummy function to use it */ -static const char *rcsid = "$Id$"; +static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusPUGH_PUGHInterp_Interpolate_c) @@ -39,7 +40,7 @@ CCTK_FILEVERSION(CactusPUGH_PUGHInterp_Interpolate_c) order, point, dims, n, coeff) \ { \ int ii, jj, kk; \ - cctk_type *fi; \ + const cctk_type *fi; \ /* for some reason (probably loop unrolling & pipelining) the compiler \ produces faster code if arrays are used instead of scalars */ \ cctk_subtype interp_result, fj[1], fk[1]; \ @@ -54,7 +55,7 @@ CCTK_FILEVERSION(CactusPUGH_PUGHInterp_Interpolate_c) for (jj = 0; jj <= order; jj++) \ { \ /* NOTE: for >3D arrays adapt the index calculation here */ \ - fi = (cctk_type *) in_array + \ + fi = (const cctk_type *) in_array + \ point[0] + dims[0]*(point[1]+jj + dims[1]*(point[2]+kk)); \ fj[0] = 0; \ for (ii = 0; ii <= order; ii++) \ @@ -164,14 +165,14 @@ int PUGHInterp_Interpolate (int order, int num_points, int num_dims, int num_arrays, - int dims[ /* num_dims */ ], - CCTK_REAL coord[ /* num_dims * num_points */ ], - CCTK_REAL origin[ /* num_dims */ ], - CCTK_REAL delta[ /* num_dims */ ], - int in_types[ /* num_arrays */ ], - void *in_arrays[ /* num_arrays */ ], - int out_types[ /* num_arrays */ ], - void *out_arrays[ /* num_arrays */ ]) + const int dims[], + const CCTK_REAL coord[], + const CCTK_REAL origin[], + const CCTK_REAL delta[], + const int in_types[], + const void *const in_arrays[], + const int out_types[], + void *const out_arrays[]) { int retval; int i, a, n, out_of_bounds, shift; diff --git a/src/Operator.c b/src/Operator.c index 51da9dc..58e8c74 100644 --- a/src/Operator.c +++ b/src/Operator.c @@ -73,13 +73,13 @@ static int PUGHInterp_CheckArguments (cGH *GH, int num_points, int num_in_arrays, int num_out_arrays, - int interp_coord_array_types[]); + const int interp_coord_array_types[]); #ifdef CCTK_MPI static int GetLocalCoords (cGH *GH, int num_points, const char *coord_system, - pGExtras *extras, - CCTK_REAL *coords[], + const pGExtras *extras, + const CCTK_REAL *coords[], int *num_local_points, CCTK_REAL **local_coords); #endif @@ -134,7 +134,7 @@ static int GetLocalCoords (cGH *GH, @endvar @var interp_coord_arrays @vdesc coordinates of points to interpolate at - @vtype void *[num_dims] + @vtype void *const [num_dims] @vio in @endvar @var interp_coord_array_types @@ -154,7 +154,7 @@ static int GetLocalCoords (cGH *GH, @endvar @var out_arrays @vdesc list of output arrays to interpolate to - @vtype void *[num_out_arrays] + @vtype void *const [num_out_arrays] @vio out @endvar @var out_array_types @@ -175,13 +175,14 @@ int PUGHInterp_InterpGV (cGH *GH, int num_points, int num_in_array_indices, int num_out_arrays, - void *interp_coord_arrays[], - int interp_coord_array_types[], - int in_array_indices[], - void *out_arrays[], - int out_array_types[]) + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const int in_array_indices[], + void *const out_arrays[], + const int out_array_types[]) { - CCTK_REAL **data, *interp_local_coords; + const CCTK_REAL **data; + CCTK_REAL *interp_local_coords; CCTK_REAL *origin, *delta; int nprocs; int timelevel; @@ -189,7 +190,7 @@ int PUGHInterp_InterpGV (cGH *GH, int array; int point; int retval; - void **in_arrays; + const void **in_arrays; pGH *pughGH; pGExtras *extras; cGroupDynamicData group_data; @@ -308,7 +309,7 @@ int PUGHInterp_InterpGV (cGH *GH, /* sort the individual interpolation coordinate arrays into a single one */ interp_local_coords = (CCTK_REAL *) malloc (num_dims * num_points * sizeof (CCTK_REAL)); - data = (CCTK_REAL **) interp_coord_arrays; + data = (const CCTK_REAL **) interp_coord_arrays; for (point = 0; point < num_points; point++) { for (dim = 0; dim < num_dims; dim++) @@ -426,7 +427,7 @@ int PUGHInterp_InterpGV (cGH *GH, the number of processor-local points is returned in num_local_points, their coordinates in interp_local_coords */ retval = GetLocalCoords (GH, num_points, coord_system, extras, - (CCTK_REAL **) interp_coord_arrays, + (const CCTK_REAL **) interp_coord_arrays, &num_local_points, &interp_local_coords); if (retval) { @@ -737,7 +738,7 @@ int PUGHInterp_InterpGV (cGH *GH, @endvar @var coord_arrays @vdesc list of grid coordinate arrays - @vtype void *[num_dims] + @vtype void *const [num_dims] @vio in @endvar @var coord_array_types @@ -747,7 +748,7 @@ int PUGHInterp_InterpGV (cGH *GH, @endvar @var interp_coord_arrays @vdesc coordinates of points to interpolate at - @vtype void *[num_dims] + @vtype void *const [num_dims] @vio in @endvar @var interp_coord_array_types @@ -757,7 +758,7 @@ int PUGHInterp_InterpGV (cGH *GH, @endvar @var in_arrays @vdesc list of input arrays to interpolate on - @vtype void *[num_in_arrays] + @vtype void *const [num_in_arrays] @vio in @endvar @var in_array_types @@ -767,7 +768,7 @@ int PUGHInterp_InterpGV (cGH *GH, @endvar @var out_arrays @vdesc list of output arrays to interpolate to - @vtype void *[num_out_arrays] + @vtype void *const [num_out_arrays] @vio out @endvar @var out_array_types @@ -788,21 +789,19 @@ int PUGHInterp_InterpLocal (cGH *GH, int num_dims, int num_in_arrays, int num_out_arrays, - int coord_dims[], - void *coord_arrays[], - int coord_array_types[], - void *interp_coord_arrays[], - int interp_coord_array_types[], - void *in_arrays[], - int in_array_types[], - void *out_arrays[], - int out_array_types[]) + const int coord_dims[], + const void *const coord_arrays[], + const int coord_array_types[], + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const void *const in_arrays[], + const int in_array_types[], + void *const out_arrays[], + const int out_array_types[]) { int dim, point, retval; CCTK_REAL *coords, *origin, *delta; -/* FIXME: the volatile qualifier is just a workaround for compiler bug - on the Hitachi SR8000 machine, without it optimized code will crash */ - volatile CCTK_REAL **data; + const CCTK_REAL *const *data; /* check arguments */ @@ -830,7 +829,7 @@ int PUGHInterp_InterpLocal (cGH *GH, /* get the grid spacings - this assumes a cartesian grid */ origin = (CCTK_REAL *) malloc (2 * num_dims * sizeof (CCTK_REAL)); delta = origin + num_dims; - data = (volatile CCTK_REAL **) coord_arrays; + data = (const CCTK_REAL *const *) coord_arrays; for (dim = 0; dim < num_dims; dim++) { origin[dim] = data[dim][0]; @@ -839,7 +838,7 @@ int PUGHInterp_InterpLocal (cGH *GH, /* sort the individual interpolation coordinate arrays into a single one */ coords = (CCTK_REAL *) malloc (num_dims * num_points * sizeof (CCTK_REAL)); - data = (volatile CCTK_REAL **) interp_coord_arrays; + data = (const CCTK_REAL *const *) interp_coord_arrays; for (point = 0; point < num_points; point++) { for (dim = 0; dim < num_dims; dim++) @@ -897,7 +896,7 @@ int PUGHInterp_InterpLocal (cGH *GH, @var GH @vdesc Pointer to CCTK grid hierarchy - @vtype cGH + @vtype cGH * @vio in @endvar @var num_points @@ -936,8 +935,8 @@ int PUGHInterp_InterpLocal (cGH *GH, static int GetLocalCoords (cGH *GH, int num_points, const char *coord_system, - pGExtras *extras, - CCTK_REAL *coords[], + const pGExtras *extras, + const CCTK_REAL *coords[], int *num_local_points, CCTK_REAL **local_coords) { @@ -1259,7 +1258,7 @@ static int PUGHInterp_CheckArguments (cGH *GH, int num_points, int num_in_arrays, int num_out_arrays, - int interp_coord_array_types[]) + const int interp_coord_array_types[]) { int i; diff --git a/src/Startup.c b/src/Startup.c index d8eac29..f642715 100644 --- a/src/Startup.c +++ b/src/Startup.c @@ -5,8 +5,6 @@ @desc Startup routines for PUGHInterp @enddesc - @history - @endhistory @version $Id$ @@*/ @@ -97,11 +95,11 @@ static int PUGHInterp_InterpGV_1stOrder (cGH *GH, int num_points, int num_in_array_indices, int num_out_arrays, - void *interp_coord_arrays[], - int interp_coord_array_types[], - int in_array_indices[], - void *out_arrays[], - int out_array_types[]) + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const int in_array_indices[], + void *const out_arrays[], + const int out_array_types[]) { return (PUGHInterp_InterpGV (GH, 1, coord_system, num_points, num_in_array_indices, num_out_arrays, @@ -115,11 +113,11 @@ static int PUGHInterp_InterpGV_2ndOrder (cGH *GH, int num_points, int num_in_array_indices, int num_out_arrays, - void *interp_coord_arrays[], - int interp_coord_array_types[], - int in_array_indices[], - void *out_arrays[], - int out_array_types[]) + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const int in_array_indices[], + void *const out_arrays[], + const int out_array_types[]) { return (PUGHInterp_InterpGV (GH, 2, coord_system, num_points, num_in_array_indices, num_out_arrays, @@ -133,11 +131,11 @@ static int PUGHInterp_InterpGV_3rdOrder (cGH *GH, int num_points, int num_in_array_indices, int num_out_arrays, - void *interp_coord_arrays[], - int interp_coord_array_types[], - int in_array_indices[], - void *out_arrays[], - int out_array_types[]) + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const int in_array_indices[], + void *const out_arrays[], + const int out_array_types[]) { return (PUGHInterp_InterpGV (GH, 3, coord_system, num_points, num_in_array_indices, num_out_arrays, @@ -151,15 +149,15 @@ static int PUGHInterp_InterpLocal_1stOrder (cGH *GH, int num_dims, int num_in_arrays, int num_out_arrays, - int coord_dims[], - void *coord_arrays[], - int coord_array_types[], - void *interp_coord_arrays[], - int interp_coord_array_types[], - void *in_arrays[], - int in_array_types[], - void *out_arrays[], - int out_array_types[]) + const int coord_dims[], + const void *const coord_arrays[], + const int coord_array_types[], + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const void *const in_arrays[], + const int in_array_types[], + void *const out_arrays[], + const int out_array_types[]) { return (PUGHInterp_InterpLocal (GH, 1, num_points, num_dims, num_in_arrays, num_out_arrays, @@ -175,15 +173,15 @@ static int PUGHInterp_InterpLocal_2ndOrder (cGH *GH, int num_dims, int num_in_arrays, int num_out_arrays, - int coord_dims[], - void *coord_arrays[], - int coord_array_types[], - void *interp_coord_arrays[], - int interp_coord_array_types[], - void *in_arrays[], - int in_array_types[], - void *out_arrays[], - int out_array_types[]) + const int coord_dims[], + const void *const coord_arrays[], + const int coord_array_types[], + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const void *const in_arrays[], + const int in_array_types[], + void *const out_arrays[], + const int out_array_types[]) { return (PUGHInterp_InterpLocal (GH, 2, num_points, num_dims, num_in_arrays, num_out_arrays, @@ -199,15 +197,15 @@ static int PUGHInterp_InterpLocal_3rdOrder (cGH *GH, int num_dims, int num_in_arrays, int num_out_arrays, - int coord_dims[], - void *coord_arrays[], - int coord_array_types[], - void *interp_coord_arrays[], - int interp_coord_array_types[], - void *in_arrays[], - int in_array_types[], - void *out_arrays[], - int out_array_types[]) + const int coord_dims[], + const void *const coord_arrays[], + const int coord_array_types[], + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const void *const in_arrays[], + const int in_array_types[], + void *const out_arrays[], + const int out_array_types[]) { return (PUGHInterp_InterpLocal (GH, 3, num_points, num_dims, num_in_arrays, num_out_arrays, diff --git a/src/pughInterpGH.h b/src/pughInterpGH.h index e6eef76..c9187ff 100644 --- a/src/pughInterpGH.h +++ b/src/pughInterpGH.h @@ -34,11 +34,11 @@ int PUGHInterp_InterpGV (cGH *GH, int num_points, int num_in_array_indices, int num_out_arrays, - void *interp_coord_arrays[], - int interp_coord_array_types[], - int in_array_indices[], - void *out_arrays[], - int out_array_types[]); + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const int in_array_indices[], + void *const out_arrays[], + const int out_array_types[]); int PUGHInterp_InterpLocal (cGH *GH, int order, @@ -46,26 +46,26 @@ int PUGHInterp_InterpLocal (cGH *GH, int num_dims, int num_in_arrays, int num_out_arrays, - int coord_dims[], - void *coord_arrays[], - int coord_array_types[], - void *interp_coord_arrays[], - int interp_coord_array_types[], - void *in_arrays[], - int in_array_types[], - void *out_arrays[], - int out_array_types[]); + const int coord_dims[], + const void *const coord_arrays[], + const int coord_array_types[], + const void *const interp_coord_arrays[], + const int interp_coord_array_types[], + const void *const in_arrays[], + const int in_array_types[], + void *const out_arrays[], + const int out_array_types[]); /* prototypes of routines used internally */ int PUGHInterp_Interpolate (int order, int num_points, int num_dims, int num_arrays, - int dims[ /* num_dims */ ], - CCTK_REAL coord[ /* num_dims * num_points */ ], - CCTK_REAL origin[ /* num_dims */ ], - CCTK_REAL delta[ /* num_dims */ ], - int in_types[ /* num_arrays */ ], - void *in_arrays[ /* num_arrays */ ], - int out_types[ /* num_arrays */ ], - void *out_arrays[ /* num_arrays */ ]); + const int dims[ /* num_dims */ ], + const CCTK_REAL coord[ /* num_dims*num_points */ ], + const CCTK_REAL origin[ /* num_dims */ ], + const CCTK_REAL delta[ /* num_dims */ ], + const int in_types[ /* num_arrays */ ], + const void *const in_arrays[ /* num_arrays */ ], + const int out_types[ /* num_arrays */ ], + void *const out_arrays[ /* num_arrays */ ]); -- cgit v1.2.3