[Avida-SVN] r1073 - in branches/coopcomm: Avida.xcodeproj source/cpu source/main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Mon Nov 6 09:11:12 PST 2006


Author: beckma24
Date: 2006-11-06 12:11:12 -0500 (Mon, 06 Nov 2006)
New Revision: 1073

Modified:
   branches/coopcomm/Avida.xcodeproj/project.pbxproj
   branches/coopcomm/source/cpu/cHardwareCPU.cc
   branches/coopcomm/source/main/cOrgMessage.h
   branches/coopcomm/source/main/cPopulationCell.cc
   branches/coopcomm/source/main/cTaskLib.cc
Log:
Finished simple driectional sending tasks.

Modified: branches/coopcomm/Avida.xcodeproj/project.pbxproj
===================================================================
--- branches/coopcomm/Avida.xcodeproj/project.pbxproj	2006-11-05 16:52:53 UTC (rev 1072)
+++ branches/coopcomm/Avida.xcodeproj/project.pbxproj	2006-11-06 17:11:12 UTC (rev 1073)
@@ -925,7 +925,7 @@
 		DCC315CF076253A5008F7A48 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
 		DCC315D0076253A5008F7A48 /* task_event_gen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = task_event_gen.cc; sourceTree = "<group>"; };
 		DCC315D1076253A5008F7A48 /* task_event_gen.old.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = task_event_gen.old.cc; sourceTree = "<group>"; };
-		DCC3164D07626CF3008F7A48 /* avida */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = avida; sourceTree = BUILT_PRODUCTS_DIR; };
+		DCC3164D07626CF3008F7A48 /* avida */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = avida; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */

Modified: branches/coopcomm/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/coopcomm/source/cpu/cHardwareCPU.cc	2006-11-05 16:52:53 UTC (rev 1072)
+++ branches/coopcomm/source/cpu/cHardwareCPU.cc	2006-11-06 17:11:12 UTC (rev 1073)
@@ -3020,11 +3020,15 @@
   int standardNeighborhoodSize, actualNeighborhoodSize, newFacing, currentFacing;
   actualNeighborhoodSize = organism->GetNeighborhoodSize();
   
+  
   ReadLabel();
   if(m_world->GetConfig().WORLD_GEOMETRY.Get() == nGeometry::TORUS || m_world->GetConfig().WORLD_GEOMETRY.Get() == nGeometry::GRID)
     standardNeighborhoodSize = 8;
-    
+  else {
+    exit(-1);
+  }
   newFacing = GetLabel().AsIntGreyCode(NUM_NOPS) % standardNeighborhoodSize;
+//std::cerr<<"Facing = "<<newFacing<<endl;
   
   for(int i = 0; i < actualNeighborhoodSize; i++) {
     currentFacing = organism->GetFacing();

Modified: branches/coopcomm/source/main/cOrgMessage.h
===================================================================
--- branches/coopcomm/source/main/cOrgMessage.h	2006-11-05 16:52:53 UTC (rev 1072)
+++ branches/coopcomm/source/main/cOrgMessage.h	2006-11-06 17:11:12 UTC (rev 1073)
@@ -121,7 +121,35 @@
 };
 
 
+/*! A predicate that returns true and tracks the label and data field for messages
+that contain a sink as the receiver.
+*/
+/*struct cOrgMessage_PredSinkReceiverEQU : public cOrgMessage_Predicate {
+  cOrgMessage_PredSinkReceiverEQU(unsigned int data) : m_data(data) { }
+  
+  virtual bool operator()(cOrgMessage& msg) {
+    if(m_data==msg.GetReceiver().get) {
+      m_cell_ids.insert(msg.GetSender()->GetCellID());
+    }
+  }
 
+  virtual void print(std::ostream& out) { 
+    out << "data==" << m_data << ":{";
+    for(std::set<int>::iterator i=m_cell_ids.begin(); i!=m_cell_ids.end(); ++i) {
+      out << *i << ",";
+    }
+    out << "}";
+  }
+  
+  virtual void reset() { 
+    m_cell_ids.clear();
+  }
+  
+  unsigned int m_data;
+  std::set<int> m_cell_ids;
+};
+*/
+
 #ifdef ENABLE_UNIT_TESTS
 namespace nOrgMessage {
   /**

Modified: branches/coopcomm/source/main/cPopulationCell.cc
===================================================================
--- branches/coopcomm/source/main/cPopulationCell.cc	2006-11-05 16:52:53 UTC (rev 1072)
+++ branches/coopcomm/source/main/cPopulationCell.cc	2006-11-06 17:11:12 UTC (rev 1073)
@@ -211,6 +211,7 @@
 		du = 1; //up
   
 	// This is hackish.
+        // If you change these return values then the directional send tasks, like sent-north, need to be updated.
 	if(lr==0 && du==-1) return 0; //S
 	if(lr==-1 && du==-1) return 1; //SW
 	if(lr==-1 && du==0) return 3; //W

Modified: branches/coopcomm/source/main/cTaskLib.cc
===================================================================
--- branches/coopcomm/source/main/cTaskLib.cc	2006-11-05 16:52:53 UTC (rev 1072)
+++ branches/coopcomm/source/main/cTaskLib.cc	2006-11-06 17:11:12 UTC (rev 1073)
@@ -2015,107 +2015,83 @@
 }
 
 double cTaskLib::Task_SentNorth(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver-1 && x_sender == x_receiver)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 6)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentNorthWest(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver -1 && x_sender == x_receiver -1)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 2)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentWest(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver && x_sender == x_receiver -1)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 3)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentSouthWest(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver +1 && x_sender == x_receiver -1)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 1)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentSouth(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver +1 && x_sender == x_receiver)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 0)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentSouthEast(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver +1 && x_sender == x_receiver +1)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 4)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentEast(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver && x_sender == x_receiver +1)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 5)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 double cTaskLib::Task_SentNorthEast(cTaskContext* ctx) const {
-/*  if(ctx->GetMessage() == NULL)
+  if(ctx->GetMessage() == NULL)
     return 0.0;
-  int x_sender, y_sender, x_receiver, y_receiver, x_BS, y_BS;
 
-  ctx->GetMessage()->GetSender()->GetPosition(x_sender,y_sender);
-  ctx->GetMessage()->GetReceiver()->GetPosition(x_receiver,y_receiver);
-
-  if(y_sender == y_receiver -1 && x_sender == x_receiver +1)
+  cPopulationCell* sender = ctx->GetMessage()->GetSender()->GetCell();
+  if(sender->GetFacing() == 7)
     return 1.0;
-*/  return 0.0;
+  return 0.0;
 }
 
 




More information about the Avida-cvs mailing list