[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