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();