Support #1725: Improving pup_stl testing
[charm.git] / examples / charm++ / PUP / STLPUP / SimplePUP.h
index 95735bdbbf2c34efde379499b3498b54412d0c04..d28f9b044b5df07d2c60db7d3c8f24802c139be5 100644 (file)
@@ -10,6 +10,8 @@
 ///////////////////////////////////////
 
 #include "SimplePUP.decl.h"
+#include <vector>
+#include <cassert>
 
 class main : public CBase_main {
 
@@ -21,8 +23,7 @@ public:
 
 };
 
-
-class SimpleArray : public CBase_SimpleArray {
+template <typename U> class SimpleArray : public CBase_SimpleArray<U> {
 
  public:
   
@@ -37,25 +38,36 @@ class SimpleArray : public CBase_SimpleArray {
 
   ~SimpleArray(){}
 
-  void acceptData(HeapObject &inData){
-
+  void acceptData(const HeapObject<U> &inData,
+          const std::vector<U> &dataToCompare){
+    
     //do something to the object
     localCopy=inData;
+
+    assert(inData.data.size() == dataToCompare.size());
+    for (int i = 0; i < dataToCompare.size(); i++)
+    {
+        assert(inData.data[i] == dataToCompare[i]);
+    }
+
     localCopy.doWork();
 
-    if(thisIndex==0) //no one lower to pass to
+    if(this->thisIndex==0) //no one lower to pass to
       {
        done();
       }
     else
       { // pass object down one index
-       thisProxy[thisIndex-1].acceptData(localCopy);
+       this->thisProxy[this->thisIndex-1].acceptData(localCopy, dataToCompare);
       }
   }
 
  private:
 
-  HeapObject localCopy;
+  HeapObject<U> localCopy;
 
 };
 
+#define CK_TEMPLATES_ONLY
+#include "SimplePUP.def.h"
+#undef CK_TEMPLATES_ONLY