Update examples to show how custom array indices should use placement new to construc...
authorRamprasad Venkataraman <ramv@illinois.edu>
Mon, 9 Nov 2009 19:31:42 +0000 (19:31 +0000)
committerRamprasad Venkataraman <ramv@illinois.edu>
Mon, 9 Nov 2009 19:31:42 +0000 (19:31 +0000)
examples/charm++/hello/fancyarray/hello.C
tests/charm++/pingpong/pingpong.C

index d3d57878a88020c079de2cd1bb2ba7bcd89f5fd8..535fd991af6999a3643dd00f579c1bea78dfdaaa 100644 (file)
@@ -24,11 +24,18 @@ public:
 // manager.  This class is only used by the translator--
 // you never need to refer to it again!
 class CkArrayIndexFancy : public CkArrayIndex {
-       Fancy idx;
+       Fancy *idx;
 public:
+    CkArrayIndexFancy() 
+    {
+        /// Use placement new to ensure that the custom index object is placed in the memory reserved for it in the base class
+        idx = new(index) Fancy(); 
+    }
+
        CkArrayIndexFancy(const Fancy &f)
-               :idx(f) 
        {
+        /// Use placement new to ensure that the custom index object is placed in the memory reserved for it in the base class
+        idx = new(index) Fancy(f);
                nInts=2;
        }
 };
index 39c4d1746eff805e22ae8e553938d7f74b9a08f1..db065262116f8866560ac87efa94b34cf13e3653 100644 (file)
@@ -30,9 +30,14 @@ class Fancy
 };
 
 class CkArrayIndexFancy : public CkArrayIndex {
-  Fancy f;
+  Fancy *f;
   public:
-    CkArrayIndexFancy(char *str) : f(str) {nInts=3;}
+    CkArrayIndexFancy(char *str) 
+    {
+        /// Use placement new to ensure that the custom index object is placed in the memory reserved for it in the base class
+        f = new (index) Fancy(str);
+        nInts=3; 
+    }
 };
 
 #include "pingpong.decl.h"