MeshStreamer: Changed some parameters to references to avoid invoking
authorLukasz Wesolowski <wesolwsk@illinois.edu>
Sun, 13 Nov 2011 21:33:25 +0000 (15:33 -0600)
committerLukasz Wesolowski <wesolwsk@illinois.edu>
Sun, 13 Nov 2011 21:33:25 +0000 (15:33 -0600)
copy constructor when items are large user-defined types.

src/libs/ck-libs/MeshStreamer/MeshStreamer.h

index e2ddd32140f960656570a02bc38385ea1e5ed274..4ead0a46cc216718c8ed4651e65377d72416f980 100644 (file)
@@ -66,7 +66,7 @@ public:
        destinationPes[index] = destinationPe;
     }
 
-    dtype getDataItem(const int index) {
+    dtype &getDataItem(const int index) {
         return data[index];
     }
 };
@@ -75,7 +75,7 @@ template <class dtype>
 class MeshStreamerClient : public Group {
  public:
      virtual void receiveCombinedData(MeshStreamerMessage<dtype> *msg);
-     virtual void process(dtype data)=0; 
+     virtual void process(dtype &data)=0; 
 };
 
 template <class dtype>
@@ -135,7 +135,7 @@ public:
     ~MeshStreamer();
 
       // entry
-    void insertData(const dtype &dataItem, const int destinationPe); 
+    void insertData(dtype &dataItem, const int destinationPe); 
     void doneInserting();
     void receiveAggregateData(MeshStreamerMessage<dtype> *msg);
     // void receivePersonalizedData(MeshStreamerMessage<dtype> *msg);
@@ -355,7 +355,7 @@ void MeshStreamer<dtype>::storeMessage(MeshStreamerMessage<dtype> ** const messa
 }
 
 template <class dtype>
-void MeshStreamer<dtype>::insertData(const dtype &dataItem, const int destinationPe) {
+void MeshStreamer<dtype>::insertData(dtype &dataItem, const int destinationPe) {
   static int count = 0;
 
   if (destinationPe == CkMyPe()) {
@@ -427,7 +427,7 @@ void MeshStreamer<dtype>::receiveAggregateData(MeshStreamerMessage<dtype> *msg)
 
   for (int i = 0; i < msg->numDataItems; i++) {
     destinationPe = msg->destinationPes[i];
-    dtype dataItem = msg->getDataItem(i);
+    dtype &dataItem = msg->getDataItem(i);
     determineLocation(destinationPe, destinationCoordinates);
 #ifdef DEBUG_STREAMER
     CkAssert(destinationCoordinates.planeIndex == myPlaneIndex_);