always define ConverDeliver() function in case it is needed (for example, some part...
[charm.git] / tests / charm++ / simplearrayhello / hello.C
1 #include <stdio.h>
2 #include "hello.decl.h"
3
4 /*readonly*/ CProxy_Main mainProxy;
5 /*readonly*/ int nElements;
6
7 /*mainchare*/
8 class Main : public Chare
9 {
10 public:
11   Main(CkArgMsg* m)
12   {
13     //Process command-line arguments
14     nElements=5;
15     if(m->argc >1 ) nElements=atoi(m->argv[1]);
16     delete m;
17
18     //Start the computation
19     CkPrintf("Running Hello on %d processors for %d elements\n",
20              CkNumPes(),nElements);
21     mainProxy = thishandle;
22
23     CProxy_Hello arr = CProxy_Hello::ckNew(nElements);
24
25     arr[0].SayHi(17);
26   };
27
28   void done(void)
29   {
30     CkPrintf("All done\n");
31     CkExit();
32   };
33 };
34
35 /*array [1D]*/
36 class Hello : public CBase_Hello 
37 {
38 public:
39   Hello()
40   {
41     CkPrintf("Hello %d created\n",thisIndex);
42   }
43
44   Hello(CkMigrateMessage *m) {}
45   
46   void SayHi(int hiNo)
47   {
48     CkPrintf("Hi[%d] from element %d %d\n",hiNo,thisIndex,nElements);
49     if (thisIndex < nElements-1)
50       //Pass the hello on:
51       thisProxy[thisIndex+1].SayHi(hiNo+1);
52     else 
53       //We've been around once-- we're done.
54       mainProxy.done();
55   }
56 };
57
58 #include "hello.def.h"