00001 #include "NodeLocalMultiTargetDelayMap.h"
00002 #include <iostream>
00003
00004 using std::cout;
00005 using std::endl;
00006
00007 NodeLocalMultiTargetDelayMap::NodeLocalMultiTargetDelayMap()
00008 {}
00009
00010 NodeLocalMultiTargetDelayMap::~NodeLocalMultiTargetDelayMap()
00011 {}
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 void NodeLocalMultiTargetDelayMap::insert(engineid_t src_eng, local_objectid_t localid,
00022 engineid_t dest_eng, delaystep_t delay, spikegroupid_t group)
00023 {
00024
00025
00026 if (src_eng >= _map.size()) _map.resize(src_eng + 1);
00027 if (localid >= _map[src_eng].size()) _map[src_eng].resize(localid + 1);
00028 if (dest_eng >= _map[src_eng][localid].size()) _map[src_eng][localid].resize(dest_eng + 1);
00029 _map[src_eng][localid][dest_eng][delay]=group;
00030 }
00031
00032 spikegroupid_t NodeLocalMultiTargetDelayMap::find(engineid_t src_eng, local_objectid_t localid,
00033 engineid_t dest_eng, delaystep_t delay)
00034 {
00035 delaymaptype::const_iterator find_iter;
00036 if (src_eng >= _map.size()) return no_spikegroup;
00037 if (localid >= _map[src_eng].size()) return no_spikegroup;
00038 if (dest_eng >= _map[src_eng][localid].size()) return no_spikegroup;
00039
00040 if ( (find_iter = _map[src_eng][localid][dest_eng].find(delay)) != _map[src_eng][localid][dest_eng].end() ) {
00041 return find_iter->second ;
00042 }
00043 return no_spikegroup;
00044 }
00045
00046 NodeLocalMultiTargetDelayMap::const_iterator
00047 NodeLocalMultiTargetDelayMap::beginDelays(engineid_t src_eng, local_objectid_t localid,
00048 engineid_t dest_eng)
00049 {
00050 return _map[src_eng][localid][dest_eng].begin();
00051 }
00052
00053 NodeLocalMultiTargetDelayMap::const_iterator NodeLocalMultiTargetDelayMap::endDelays(engineid_t src_eng,
00054 local_objectid_t localid, engineid_t dest_eng)
00055 {
00056 return _map[src_eng][localid][dest_eng].end();
00057 }
00058
00059 int NodeLocalMultiTargetDelayMap::lastDestEngine(engineid_t src_eng, local_objectid_t localid)
00060 {
00061
00062 if (_map.size() > src_eng && _map[src_eng].size() > localid)
00063 return _map[src_eng][localid].size() - 1;
00064 else
00065 return -1;
00066 }
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080