Revert "Drop requirement for user code to call CBase_foo::pup(p)"
[charm.git] / tests / charm++ / sdag / migration / test1.C
1 #include <cstdlib>
2 #include <cmath>
3
4 #include "test1.decl.h"
5
6 /*readonly*/ CProxy_Main mainProxy;
7 using namespace std;
8
9 int nrows = 5;
10 int ncols = 5;
11
12 class Main : public CBase_Main {
13 public:
14   CProxy_Cell arr;
15
16   Main(CkArgMsg* m) {
17     delete m;
18
19     CkPrintf("Running Parallel on %d processors for %d elements\n",
20              CkNumPes(), nrows * ncols);
21
22     mainProxy = thishandle;
23
24     arr = CProxy_Cell::ckNew(nrows, ncols);
25     arr.finished(100);
26     arr.process();
27   }
28
29   void end() {
30     CkPrintf("Test was successful!\n");
31     CkExit();
32   }
33
34 };
35
36 class Cell : public CBase_Cell {
37   Cell_SDAG_CODE
38
39 public:
40   int val;
41
42   Cell() : val(thisIndex.x * 10 + thisIndex.y) {
43     __sdag_init();
44   }
45
46   void pup(PUP::er &p) {
47     CkPrintf("called PUP for cell %s\n", p.isPacking() ? "packing" : "unpacking or sizing");
48  
49     CBase_Cell::pup(p);
50     __sdag_pup(p);
51
52     p | val;
53   }
54
55   Cell(CkMigrateMessage *m) {__sdag_init();}
56 };
57
58 #include "test1.def.h"