demand creation test
[charm.git] / tests / charm++ / demand_creation / hello.C
1 /** \file hello.C
2  *  Author: Ehsan Totoni 
3  *  Date Created: July 20, 2012
4  */
5
6 #include "hello.decl.h"
7 #include <stdio.h>
8
9 /*readonly*/ CProxy_Main mainProxy;
10
11 /** \class Main
12  *
13  */
14 class Main : public CBase_Main
15 {
16 public:
17   CProxy_Hello arr;
18   int counter;
19
20   Main(CkArgMsg* m)
21   {
22     //Start the computation
23     CkPrintf("Running Hello on %d processors \n",
24              CkNumPes());
25     mainProxy = thisProxy;
26
27     arr = CProxy_Hello::ckNew();
28     arr.doneInserting();
29     counter = 0;
30     CkPrintf("Array created\n");
31
32     arr(0, 0, 0).SayHi(0);
33     arr(0, 4, 8).SayHi(1);
34     arr(20, 3, 7).SayHi(2);
35     arr(8, 0, 4).SayHi(3);
36   };
37
38   void done(void)
39   {
40     counter++;
41     if(counter == 4) {
42       CkPrintf("All done\n");
43       CkExit();
44     }
45   };
46 };
47
48 /** \class Hello
49  *
50  */
51 class Hello : public CBase_Hello 
52 {
53 public:
54   Hello()
55   {
56     CkPrintf("Hello %d %d %d created\n", thisIndex.x, thisIndex.y, thisIndex.z);
57   }
58
59   Hello(CkMigrateMessage *m) {}
60   
61   void SayHi(int hiNo)
62   {
63     CkPrintf("Hi [%d] from element %d %d %d\n", hiNo, thisIndex.x, thisIndex.y, thisIndex.z);
64     mainProxy.done();
65   }
66
67 };
68
69 #include "hello.def.h"