NDMeshStreamer: 1. bug fix - cast to base client class
authorLukasz Wesolowski <wesolwsk@illinois.edu>
Mon, 2 Apr 2012 20:39:29 +0000 (15:39 -0500)
committerLukasz Wesolowski <wesolwsk@illinois.edu>
Mon, 2 Apr 2012 20:39:29 +0000 (15:39 -0500)
                2. remove template parameter from iterator class by
                   slightly modifying interface

src/libs/ck-libs/NDMeshStreamer/NDMeshStreamer.h

index aa82af874879475e60fee551cc00bab8c6c762d4..16eb9d8daaa254ac516d65a2451f3d3f15638911 100644 (file)
@@ -676,22 +676,21 @@ public:
 
 };
 
-template <class dtype, class ctype>
+template <class dtype>
 class MeshStreamerClientIterator : public CkLocIterator {
 
 public:
   
   CompletionDetector *detectorLocalObj_;
-  ctype clientProxy_;
+  CkArray *clientArrMgr_;
   MeshStreamerClientIterator(CompletionDetector *detectorObj, 
-                            ctype clientProxy
-   : detectorLocalObj_(detectorObj), clientProxy_(clientProxy) {}
+                            CkArray *clientArrMgr
+    : detectorLocalObj_(detectorObj), clientArrMgr_(clientArrMgr) {}
 
   // CkLocMgr::iterate will call addLocation on all elements local to this PE
   void addLocation(CkLocation &loc) {
 
-    ((MeshStreamerClient<dtype> *) 
-     (clientProxy_.ckLocalBranch()->lookup(loc.getIndex())))
+    ((MeshStreamerClient<dtype> *) (clientArrMgr_->lookup(loc.getIndex())))
       ->setDetector(detectorLocalObj_); 
 
   }
@@ -722,7 +721,7 @@ private:
   void localDeliver(ArrayDataItem<dtype, itype> &packedDataItem) {
     itype arrayId = packedDataItem.arrayIndex; 
 
-    MeshStreamerArrayClient<dtype> *clientObj;
+    MeshStreamerClient<dtype> *clientObj;
 #ifdef CACHE_ARRAY_METADATA
     clientObj = clientObjs_[arrayId];
 #else
@@ -759,9 +758,9 @@ private:
 #else
     // set completion detector in local elements of the client
     CkLocMgr *clientLocMgr = clientProxy_.ckLocMgr(); 
-    MeshStreamerClientIterator<dtype, ctype> clientIterator(
+    MeshStreamerClientIterator<dtype> clientIterator(
      MeshStreamer<ArrayDataItem<dtype, itype> >::detectorLocalObj_, 
-     clientProxy_);
+     clientProxy_.ckLocalBranch());
     clientLocMgr->iterate(clientIterator);
 #endif