Support #1725: Improving pup_stl testing
[charm.git] / examples / charm++ / PUP / STLPUP / HeapObjectSTL.h
1 #include <vector>
2 #include <pup_stl.h>
3 template <typename U> class HeapObject
4 {
5
6  public:
7
8   int publicInt;
9   std::vector<U> data;
10
11  HeapObject(int param1, bool param2):publicInt(param1), privateBool(param2) {}
12
13  HeapObject():publicInt(0), privateBool(false) {}
14  void pup(PUP::er &p)
15  {
16    // remember to pup your superclass if there is one
17    p|publicInt;
18    p|privateBool;
19    p|data;
20  }
21  inline HeapObject &operator=(const HeapObject<U> &indata) {
22     publicInt=indata.publicInt;
23     privateBool=indata.privateBool;
24     data=indata.data;
25     return *this;
26   }
27
28
29  void doWork()
30  {
31    // here is where a useful object would do something
32    privateBool=publicInt<20;
33  }
34
35  ~HeapObject(){}
36
37  private:
38
39   // PUP is orthogonal to public vs private member choices
40   bool privateBool;
41 };