# HG changeset patch # User mas01cr # Date 1197457848 0 # Node ID 692e026947a832b91d4c327355d8dffc3c81b3d6 # Parent 0ebbf9723930cc9eaa89b58de4a9672cf263a5be Template classize pointQueryReporter. Now Ollie /should/ be able to support his own use case. diff -r 0ebbf9723930 -r 692e026947a8 query.cpp --- a/query.cpp Wed Dec 12 10:58:24 2007 +0000 +++ b/query.cpp Wed Dec 12 11:10:48 2007 +0000 @@ -29,7 +29,7 @@ case O2_POINT_QUERY: sequenceLength = 1; normalizedDistance = false; - r = new pointQueryReporter(pointNN); + r = new pointQueryReporter >(pointNN); break; case O2_TRACK_QUERY: sequenceLength = 1; diff -r 0ebbf9723930 -r 692e026947a8 reporter.h --- a/reporter.h Wed Dec 12 10:58:24 2007 +0000 +++ b/reporter.h Wed Dec 12 11:10:48 2007 +0000 @@ -40,7 +40,7 @@ virtual void report(char *fileTable, adb__queryResponse *adbQueryResponse) = 0; }; -class pointQueryReporter : public Reporter { +template class pointQueryReporter : public Reporter { public: pointQueryReporter(unsigned int pointNN); ~pointQueryReporter(); @@ -48,19 +48,19 @@ void report(char *fileTable, adb__queryResponse *adbQueryResponse); private: unsigned int pointNN; - std::priority_queue< NNresult, std::vector< NNresult >, std::greater< NNresult > > *queue; + std::priority_queue< NNresult, std::vector< NNresult >, T> *queue; }; -pointQueryReporter::pointQueryReporter(unsigned int pointNN) +template pointQueryReporter::pointQueryReporter(unsigned int pointNN) : pointNN(pointNN) { - queue = new std::priority_queue< NNresult, std::vector< NNresult >, std::greater< NNresult > >; + queue = new std::priority_queue< NNresult, std::vector< NNresult >, T>; } -pointQueryReporter::~pointQueryReporter() { +template pointQueryReporter::~pointQueryReporter() { delete queue; } -void pointQueryReporter::add_point(unsigned int trackID, unsigned int qpos, unsigned int spos, double dist) { +template void pointQueryReporter::add_point(unsigned int trackID, unsigned int qpos, unsigned int spos, double dist) { NNresult r; r.trackID = trackID; r.qpos = qpos; @@ -72,7 +72,7 @@ } } -void pointQueryReporter::report(char *fileTable, adb__queryResponse *adbQueryResponse) { +template void pointQueryReporter::report(char *fileTable, adb__queryResponse *adbQueryResponse) { NNresult r; std::vector v; unsigned int size = queue->size();