/* Paul Johnson August 2, 2001 Pass class as an argument to customize creation of objects inside a container or space */ #import #import #import @interface PaulCell: CreateDrop { int serialNumber; } - setSerialNumber: (int)serialNumber; - (void)describe: stream; @end @implementation PaulCell - setSerialNumber: (int)theSerialNumber { serialNumber = theSerialNumber; return self; } - sayHi { printf("I am cell number %d \n", serialNumber); } - (void)describe: stream { printf ("[Recruiter] serial Number: %d\n", serialNumber); } @end @interface HoldingCompany: CreateDrop { Class cellClass; id aList; } -createEnd; -(void) setCellClass: (Class) aClass; - generateSomeInstances: (int) n; @end @implementation HoldingCompany -createEnd { aList = [List createBegin: [self getZone]]; } -(void) setCellClass: (Class) aClass { cellClass = aClass; } - generateSomeInstances: (int) n { int i; for (i = 0; i < n; i++) { id obj; obj = [cellClass createBegin: [self getZone]]; [obj setSerialNumber: i]; obj = [obj createEnd]; [obj sayHi]; } return self; } @end int main (int argc, const char **argv) { initSwarm (argc, argv); { HoldingCompany * holding; holding = [HoldingCompany createBegin: globalZone]; [holding createEnd]; [holding setCellClass: [PaulCell class]]; [holding generateSomeInstances: 15]; } } /* Local Variables: compile-command: "$SWARMHOME/bin/libtool-swarm --mode=link gcc -D_GNU_SOURCE -o cellClass -g -Wno-import -I$SWARMHOME/include/swarm -L$SWARMHOME/lib/swarm ClassPassedAsArgument.m -lswarm -lobjc" End: */