00001
00011 #include "ConnectionsProjection.h"
00012
00013 ConnectionsProjection::ConnectionsProjection(shared_ptr<SimObjectPopulation> srcPopulation,
00014 shared_ptr<SimObjectPopulation> destPopulation,
00015 SimObjectFactory &connector,
00016 ConnectionIterator &decider,
00017 WiringMethod *wiringMethod,
00018 bool collectIDs,
00019 bool collectPairs)
00020 : net(&(*srcPopulation).getNet()), collectIDs(collectIDs), collectPairs(collectPairs)
00021 {
00022 if (collectPairs)
00023 connectPairs.reset(new vector< std::pair< SimObject::ID, SimObject::ID > > );
00024 if (wiringMethod == NULL) {
00025 connector_ids = SimpleAllToAllWiringMethod(srcPopulation->getNet()).connect(*srcPopulation, *destPopulation,
00026 connector, decider, collectIDs,
00027 collectPairs, connectPairs);
00028 }
00029 else
00030 connector_ids = wiringMethod->connect(*srcPopulation, *destPopulation, connector, decider, collectIDs,
00031 collectPairs, connectPairs);
00032 }
00033
00034 ConnectionsProjection::ConnectionsProjection(shared_ptr<SimObjectPopulation> srcPopulation,
00035 shared_ptr<SimObjectPopulation> destPopulation,
00036 ConnObjectFactory &connector,
00037 ConnectionIterator &decider,
00038 WiringMethod *wiringMethod,
00039 bool collectIDs,
00040 bool collectPairs)
00041 : net(&(*srcPopulation).getNet()), collectIDs(collectIDs), collectPairs(collectPairs)
00042 {
00043 if (collectPairs)
00044 connectPairs.reset(new vector< std::pair< SimObject::ID, SimObject::ID > > );
00045 if (wiringMethod == NULL) {
00046 connector_ids = SimpleAllToAllWiringMethod(srcPopulation->getNet()).connect(*srcPopulation, *destPopulation,
00047 connector, decider, collectIDs,
00048 collectPairs, connectPairs);
00049 }
00050 else
00051 connector_ids = wiringMethod->connect(*srcPopulation, *destPopulation, connector, decider, collectIDs,
00052 collectPairs, connectPairs);
00053 }
00054
00055
00056 ConnectionsProjection::ConnectionsProjection(const SimObjectPopulation &srcPopulation,
00057 const SimObjectPopulation &destPopulation,
00058 ConnectionIterator &decider,
00059 WiringMethod *wiringMethod,
00060 bool collectPairs)
00061 : net(&srcPopulation.getNet()), collectIDs(false)
00062 {
00063 int num_connect;
00064 if (collectPairs)
00065 connectPairs.reset(new vector< std::pair< SimObject::ID, SimObject::ID > > );
00066 if (wiringMethod == NULL) {
00067 num_connect = SimpleAllToAllWiringMethod(srcPopulation.getNet()).connect(srcPopulation, destPopulation,
00068 decider,
00069 collectPairs, connectPairs);
00070 }
00071 else
00072 num_connect = wiringMethod->connect(srcPopulation, destPopulation, decider, collectPairs, connectPairs);
00073
00074 connector_ids->push_back(num_connect);
00075 }
00076
00077
00078 ConnectionsProjection::ConnectionsProjection(const SimObjectPopulation &srcPopulation,
00079 const SimObjectPopulation &destPopulation,
00080 Time &delay,
00081 bool collectPairs)
00082 : net(&srcPopulation.getNet()), collectIDs(false), collectPairs(collectPairs)
00083 {
00084 if (collectPairs)
00085 connectPairs.reset(new vector< std::pair< SimObject::ID, SimObject::ID > > );
00086
00087 OneToOneWiringMethod(srcPopulation.getNet()).connect(srcPopulation, destPopulation, delay, collectPairs, connectPairs);
00088 }