SimplePUP example which uses PUP to pass a simple object along
[charm.git] / examples / charm++ / PUP / SimplePUP.h
1 ///////////////////////////////////////
2 //
3 //  SimplePUP.h  
4 //
5 //  Declaration of chares in SimplePUP
6 //
7 //  Author: Eric Bohm
8 //  Date: 2012/01/23
9 //
10 ///////////////////////////////////////
11
12 #include "SimplePUP.decl.h"
13
14 class main : public CBase_main {
15
16 public:
17
18   main(CkMigrateMessage *m) {}
19
20   main(CkArgMsg *m);
21
22 };
23
24
25 class SimpleArray : public CBase_SimpleArray {
26
27  public:
28   
29   SimpleArray(CkMigrateMessage *m) {}
30
31   SimpleArray(){}
32
33   void done(){
34     CkPrintf("done int %d\n",localCopy.publicInt);
35     CkExit();
36   }
37
38   ~SimpleArray(){}
39
40   void acceptData(SimpleObject &inData){
41     localCopy=inData;
42     localCopy.doWork();
43     if(thisIndex==0) //no one lower to pass to
44       {
45         done();
46       }
47     else
48       { // pass object down one index
49         thisProxy[thisIndex-1].acceptData(localCopy);
50       }
51   }
52
53  private:
54
55   SimpleObject localCopy;
56
57 };
58