#include #include #include #include #include "everything_else.hpp" #include "filter.hpp" #include "index.hpp" #include "index_spike.hpp" #include "multi_queue.hpp" using std::cout; using std::endl; using boost::make_tuple; int main(int argc, char **argv) { // read cmd line params if (argc != 4) { cout << "Usage: " << argv[0] << " instance start until" << endl; return -1; } errno = 0; char *tail; IdList::ptr_t> ids(argv[1]); const Time start(strtod(argv[2], &tail)); assert(*tail == 0); const Time until(strtod(argv[3], &tail)); assert(*tail == 0); assert(errno == 0); for (auto id : ids) assert(id < Ptr::numInstances()); assertSimDir(); { MultiQueue< Time, FilterPayload, boost::mpl::list, FilterContainer> queues(Filter(ids, start), Filter (ids, start)); // output Time ct(start); cout << "# time\tsrc\tdst" << endl; while ((ct = queues.min()) <= until) { cout << ct() << '\t'; switch (queues.minType()) { case RuntimeID::value: cout << queues.get().index.src (queues.get().minPayload().src.get<0>().extractSpike()()) << '\t' << queues.get().minPayload().dst(); queues.removeMin(ct); break; case RuntimeID::value: cout << "R\t" << queues.get().minPayload().dst(); queues.removeMin(ct); break; default: assert(false); } cout << endl; } } return 0; }