changeset 695:01e25f938b63

simplify sample code slightly Now there are two bits that are exactly the same as audiodb_query_spec(). They should be merged with the query code.
author mas01cr
date Thu, 22 Apr 2010 21:03:59 +0000
parents 55aa1919d735
children bb9478d5b57e
files audioDB.cpp sample.cpp
diffstat 2 files changed, 26 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB.cpp	Thu Apr 22 21:03:53 2010 +0000
+++ b/audioDB.cpp	Thu Apr 22 21:03:59 2010 +0000
@@ -1119,6 +1119,7 @@
     }
     total += prop;
   }
+  audiodb_liszt_free_results(adb, liszt);
 
   /* FIXME: the mean isn't really what we should be using here; it's
      more a question of "how many independent sequences of length
--- a/sample.cpp	Thu Apr 22 21:03:53 2010 +0000
+++ b/sample.cpp	Thu Apr 22 21:03:59 2010 +0000
@@ -35,56 +35,41 @@
     }
   }
 
-  if(!(qspec->qid.datum)) {
-    switch(qspec->params.distance) {
-    case ADB_DISTANCE_DOT_PRODUCT:
+  /* FIXME: this paragraph is the same as in audiodb_query_spec(). */
+  switch(qspec->params.distance) {
+  case ADB_DISTANCE_DOT_PRODUCT:
+    switch(qspec->params.accumulation) {
+    case ADB_ACCUMULATION_DB:
       qstate.accumulator = new DBAccumulator<adb_result_dist_gt>(qspec->params.npoints);
       break;
-    case ADB_DISTANCE_EUCLIDEAN_NORMED:
-    case ADB_DISTANCE_EUCLIDEAN:
-      qstate.accumulator = new DBAccumulator<adb_result_dist_lt>(qspec->params.npoints);
+    case ADB_ACCUMULATION_PER_TRACK:
+      qstate.accumulator = new PerTrackAccumulator<adb_result_dist_gt>(qspec->params.npoints, qspec->params.ntracks);
+      break;
+    case ADB_ACCUMULATION_ONE_TO_ONE:
+      qstate.accumulator = new NearestAccumulator<adb_result_dist_gt>();
       break;
     default:
       goto error;
     }
-  } else {
-    /* FIXME: this paragraph is the same as in audiodb_query_spec(),
-     apart from only being taken in one branch */
-    switch(qspec->params.distance) {
-    case ADB_DISTANCE_DOT_PRODUCT:
-      switch(qspec->params.accumulation) {
-      case ADB_ACCUMULATION_DB:
-        qstate.accumulator = new DBAccumulator<adb_result_dist_gt>(qspec->params.npoints);
-        break;
-      case ADB_ACCUMULATION_PER_TRACK:
-        qstate.accumulator = new PerTrackAccumulator<adb_result_dist_gt>(qspec->params.npoints, qspec->params.ntracks);
-        break;
-      case ADB_ACCUMULATION_ONE_TO_ONE:
-        qstate.accumulator = new NearestAccumulator<adb_result_dist_gt>();
-        break;
-      default:
-        goto error;
-      }
+    break;
+  case ADB_DISTANCE_EUCLIDEAN_NORMED:
+  case ADB_DISTANCE_EUCLIDEAN:
+    switch(qspec->params.accumulation) {
+    case ADB_ACCUMULATION_DB:
+      qstate.accumulator = new DBAccumulator<adb_result_dist_lt>(qspec->params.npoints);
       break;
-    case ADB_DISTANCE_EUCLIDEAN_NORMED:
-    case ADB_DISTANCE_EUCLIDEAN:
-      switch(qspec->params.accumulation) {
-      case ADB_ACCUMULATION_DB:
-        qstate.accumulator = new DBAccumulator<adb_result_dist_lt>(qspec->params.npoints);
-        break;
-      case ADB_ACCUMULATION_PER_TRACK:
-        qstate.accumulator = new PerTrackAccumulator<adb_result_dist_lt>(qspec->params.npoints, qspec->params.ntracks);
-        break;
-      case ADB_ACCUMULATION_ONE_TO_ONE:
-        qstate.accumulator = new NearestAccumulator<adb_result_dist_lt>();
-        break;
-      default:
-        goto error;
-      }
-     break;
+    case ADB_ACCUMULATION_PER_TRACK:
+      qstate.accumulator = new PerTrackAccumulator<adb_result_dist_lt>(qspec->params.npoints, qspec->params.ntracks);
+      break;
+    case ADB_ACCUMULATION_ONE_TO_ONE:
+      qstate.accumulator = new NearestAccumulator<adb_result_dist_lt>();
+      break;
     default:
       goto error;
     }
+    break;
+  default:
+    goto error;
   }
 
   if(audiodb_sample_loop(adb, qspec, &qstate)) {