Mercurial > hg > audiodb
changeset 235:692e026947a8 refactoring
Template classize pointQueryReporter.
Now Ollie /should/ be able to support his own use case.
author | mas01cr |
---|---|
date | Wed, 12 Dec 2007 11:10:48 +0000 |
parents | 0ebbf9723930 |
children | 9c3396bab02e |
files | query.cpp reporter.h |
diffstat | 2 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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<std::greater < NNresult > >(pointNN); break; case O2_TRACK_QUERY: sequenceLength = 1;
--- 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 T> 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 <class T> pointQueryReporter<T>::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 <class T> pointQueryReporter<T>::~pointQueryReporter() { delete queue; } -void pointQueryReporter::add_point(unsigned int trackID, unsigned int qpos, unsigned int spos, double dist) { +template <class T> void pointQueryReporter<T>::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 <class T> void pointQueryReporter<T>::report(char *fileTable, adb__queryResponse *adbQueryResponse) { NNresult r; std::vector<NNresult> v; unsigned int size = queue->size();