//http://www.santafe.edu/projects/swarm/archive/list-archive.9903/0145.html //Note: xmalloc should be replaced with Zone's allocBlock method #import #import #import #define NOFSPACES 3 unsigned Dimensionality[] = {3,4,5}; @interface MultiDimSpace: SwarmObject { float **minValue; float **maxValue; } @end @implementation MultiDimSpace - createEnd { unsigned s; [super createEnd]; minValue = xmalloc (NOFSPACES * sizeof (float *)); for (s = 0; s < NOFSPACES; s ++) minValue[s] = xmalloc (Dimensionality[s] * sizeof(float)); maxValue = xmalloc (NOFSPACES * sizeof (float *)); for(s = 0; s < NOFSPACES; s ++) maxValue[s] = xmalloc (Dimensionality[s] * sizeof (float)); } - setMinSpace: (int)space Dim: (int)dim To: (float)value { printf ("writing %u/%u: %f\n", space, dim, value); minValue[space][dim] = value; return self; } - printMinValues { unsigned s, i; for (s = 0; s < NOFSPACES; s++) for (i = 0; i < Dimensionality[s]; i++) printf ("%u %u %f\n", s, i, minValue[s][i]); return self; } int main (int argc, const char **argv) { unsigned i, s; id world; initSwarm (argc, argv); world = [[MultiDimSpace createBegin: globalZone] createEnd]; for (s = 0; s < NOFSPACES; s++) for(i = 0; i < Dimensionality[s] ; i++) [world setMinSpace: s Dim: i To: (i + 1) * (s + 1)]; [world printMinValues]; } /* Local Variables: compile-command: "/opt/src/mgd/packages/development/egcs/bin/gcc -V egcs-2.91.60 -o pj1 pj1.m -g -Wno-import -L/opt/SUNWtcl/8.0/sun4/lib -R/opt/SUNWtcl/8.0/sun4/lib -L/opt/SDGblt/2.4g/lib -R/opt/SDGblt/2.4g/lib -L/opt/SDGlibffi/1.20/lib -R/opt/SDGlibffi/1.20/lib -L/opt/src/mgd/packages/swarm/swarm/lib -R /opt/src/mgd/packages/swarm/swarm/lib -L/opt/SDGzlib/1.1.3/lib -L/usr/local/X11/lib -R/usr/local/X11/lib -L/usr/openwin/lib -R/usr/openwin/lib -L/opt/SDGhdf5/1.0.1/lib -I/opt/src/mgd/packages/swarm/swarm/include -lanalysis -lsimtools -lsimtoolsgui -lactivity -ltkobjc -lrandom -lobjectbase -ldefobj -lcollections -lmisc -ltclobjc -ltk8.0 -ltcl8.0 -lBLT -lsocket -ldl -lnsl -L/usr/openwin/lib -lpng -lz -lXpm -lX11 -lffi -lm -lobjc" End: */