changeset 427:adaa6a688a04 api-inversion

Move sequence_foo() functions out of audioDB:: namespace... ... and into the internals header, mostly to get them out of the way. That means they have to be inline, which is probably suboptimal but will do for now.
author mas01cr
date Wed, 24 Dec 2008 10:55:24 +0000
parents 4a22a0bdf9a9
children 1e748d834e24
files audioDB-internals.h audioDB.h index.cpp query.cpp
diffstat 4 files changed, 70 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB-internals.h	Wed Dec 24 10:55:20 2008 +0000
+++ b/audioDB-internals.h	Wed Dec 24 10:55:24 2008 +0000
@@ -119,3 +119,53 @@
     d += dim;
   }
 }
+
+// This is a common pattern in sequence queries: what we are doing is
+// taking a window of length seqlen over a buffer of length length,
+// and placing the sum of the elements in that window in the first
+// element of the window: thus replacing all but the last seqlen
+// elements in the buffer with the corresponding windowed sum.
+static inline void audiodb_sequence_sum(double *buffer, int length, int seqlen) {
+  double tmp1, tmp2, *ps;
+  int j, w;
+
+  tmp1 = *buffer;
+  j = 1;
+  w = seqlen - 1;
+  while(w--) {
+    *buffer += buffer[j++];
+  }
+  ps = buffer + 1;
+  w = length - seqlen; // +1 - 1
+  while(w--) {
+    tmp2 = *ps;
+    if(isfinite(tmp1)) {
+      *ps = *(ps - 1) - tmp1 + *(ps + seqlen - 1);
+    } else {
+      for(int i = 1; i < seqlen; i++) {
+        *ps += *(ps + i);
+      }
+    }
+    tmp1 = tmp2;
+    ps++;
+  }
+}
+
+// In contrast to audiodb_sequence_sum() above,
+// audiodb_sequence_sqrt() and audiodb_sequence_average() below are
+// simple mappers across the sequence.
+static inline void audiodb_sequence_sqrt(double *buffer, int length, int seqlen) {
+  int w = length - seqlen + 1;
+  while(w--) {
+    *buffer = sqrt(*buffer);
+    buffer++;
+  }
+}
+
+static inline void audiodb_sequence_average(double *buffer, int length, int seqlen) {
+  int w = length - seqlen + 1;
+  while(w--) {
+    *buffer /= seqlen;
+    buffer++;
+  }
+}
--- a/audioDB.h	Wed Dec 24 10:55:20 2008 +0000
+++ b/audioDB.h	Wed Dec 24 10:55:24 2008 +0000
@@ -321,10 +321,6 @@
 
   // private methods
   void error(const char* a, const char* b = "", const char *sysFunc = 0);
-  void sequence_sum(double *buffer, int length, int seqlen);
-  void sequence_sqrt(double *buffer, int length, int seqlen);
-  void sequence_average(double *buffer, int length, int seqlen);
-
 
   void initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD);
   void delete_arrays(int track, unsigned int numVectors, double **D, double **DD);
--- a/index.cpp	Wed Dec 24 10:55:20 2008 +0000
+++ b/index.cpp	Wed Dec 24 10:55:24 2008 +0000
@@ -104,11 +104,11 @@
   
   for(Uns32T i = 0; i < dbH->numFiles; i++){
     if(trackTable[i] >= sequenceLength) {
-      sequence_sum(snpp, trackTable[i], sequenceLength);
-      sequence_sqrt(snpp, trackTable[i], sequenceLength);
+      audiodb_sequence_sum(snpp, trackTable[i], sequenceLength);
+      audiodb_sequence_sqrt(snpp, trackTable[i], sequenceLength);
       
-      sequence_sum(sppp, trackTable[i], sequenceLength);
-      sequence_average(sppp, trackTable[i], sequenceLength);
+      audiodb_sequence_sum(sppp, trackTable[i], sequenceLength);
+      audiodb_sequence_average(sppp, trackTable[i], sequenceLength);
     }
     snpp += trackTable[i];
     sppp += trackTable[i];
@@ -302,8 +302,8 @@
       close(powerfd);
     }
     
-    sequence_sum(*sPowerp, trackTable[trackID], sequenceLength);
-    sequence_average(*sPowerp, trackTable[trackID], sequenceLength);
+    audiodb_sequence_sum(*sPowerp, trackTable[trackID], sequenceLength);
+    audiodb_sequence_average(*sPowerp, trackTable[trackID], sequenceLength);
     powerTable = 0;
 
     // Allocate and calculate the l2norm sequence
@@ -311,8 +311,8 @@
     assert(*sNormpp);
     *snPtrp = *sNormpp;
     audiodb_l2norm_buffer(fvp, dbH->dim, trackTable[trackID], *sNormpp);
-    sequence_sum(*sNormpp, trackTable[trackID], sequenceLength);
-    sequence_sqrt(*sNormpp, trackTable[trackID], sequenceLength);
+    audiodb_sequence_sum(*sNormpp, trackTable[trackID], sequenceLength);
+    audiodb_sequence_sqrt(*sNormpp, trackTable[trackID], sequenceLength);
   }
 }
 
--- a/query.cpp	Wed Dec 24 10:55:20 2008 +0000
+++ b/query.cpp	Wed Dec 24 10:55:24 2008 +0000
@@ -145,55 +145,6 @@
   return O2_ERR_KEYNOTFOUND;
 }
 
-// This is a common pattern in sequence queries: what we are doing is
-// taking a window of length seqlen over a buffer of length length,
-// and placing the sum of the elements in that window in the first
-// element of the window: thus replacing all but the last seqlen
-// elements in the buffer with the corresponding windowed sum.
-void audioDB::sequence_sum(double *buffer, int length, int seqlen) {
-  double tmp1, tmp2, *ps;
-  int j, w;
-
-  tmp1 = *buffer;
-  j = 1;
-  w = seqlen - 1;
-  while(w--) {
-    *buffer += buffer[j++];
-  }
-  ps = buffer + 1;
-  w = length - seqlen; // +1 - 1
-  while(w--) {
-    tmp2 = *ps;
-    if(isfinite(tmp1)) {
-      *ps = *(ps - 1) - tmp1 + *(ps + seqlen - 1);
-    } else {
-      for(int i = 1; i < seqlen; i++) {
-        *ps += *(ps + i);
-      }
-    }
-    tmp1 = tmp2;
-    ps++;
-  }
-}
-
-// In contrast to sequence_sum() above, sequence_sqrt() and
-// sequence_average() below are simple mappers across the sequence.
-void audioDB::sequence_sqrt(double *buffer, int length, int seqlen) {
-  int w = length - seqlen + 1;
-  while(w--) {
-    *buffer = sqrt(*buffer);
-    buffer++;
-  }
-}
-
-void audioDB::sequence_average(double *buffer, int length, int seqlen) {
-  int w = length - seqlen + 1;
-  while(w--) {
-    *buffer /= seqlen;
-    buffer++;
-  }
-}
-
 void audioDB::initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD) {
   unsigned int j, k, l, w;
   double *dp, *qp, *sp;
@@ -340,8 +291,8 @@
   *qnp = new double[*nvp];
   audiodb_l2norm_buffer(*qp, dbH->dim, *nvp, *qnp);
 
-  sequence_sum(*qnp, *nvp, sequenceLength);
-  sequence_sqrt(*qnp, *nvp, sequenceLength);
+  audiodb_sequence_sum(*qnp, *nvp, sequenceLength);
+  audiodb_sequence_sqrt(*qnp, *nvp, sequenceLength);
 
   if (usingPower) {
     *qpp = new double[*nvp];
@@ -356,8 +307,8 @@
       error("short read", powerFileName);
     }
 
-    sequence_sum(*qpp, *nvp, sequenceLength);
-    sequence_average(*qpp, *nvp, sequenceLength);
+    audiodb_sequence_sum(*qpp, *nvp, sequenceLength);
+    audiodb_sequence_average(*qpp, *nvp, sequenceLength);
   }
 
   if (usingTimes) {
@@ -454,15 +405,15 @@
     // Copy L2 norm partial-sum coefficients
     assert(*qnp = new double[*nvp]);
     memcpy(*qnp, l2normTable+trackIndexOffset, *nvp*sizeof(double));
-    sequence_sum(*qnp, *nvp, sequenceLength);
-    sequence_sqrt(*qnp, *nvp, sequenceLength);
+    audiodb_sequence_sum(*qnp, *nvp, sequenceLength);
+    audiodb_sequence_sqrt(*qnp, *nvp, sequenceLength);
     
     if( usingPower ){
       // Copy Power partial-sum coefficients
       assert(*qpp = new double[*nvp]);
       memcpy(*qpp, powerTable+trackIndexOffset, *nvp*sizeof(double));
-      sequence_sum(*qpp, *nvp, sequenceLength);
-      sequence_average(*qpp, *nvp, sequenceLength);
+      audiodb_sequence_sum(*qpp, *nvp, sequenceLength);
+      audiodb_sequence_average(*qpp, *nvp, sequenceLength);
     }
     
     if (usingTimes) {
@@ -527,12 +478,12 @@
 
   for(unsigned int i = 0; i < dbH->numFiles; i++){
     if(trackTable[i] >= sequenceLength) {
-      sequence_sum(snpp, trackTable[i], sequenceLength);
-      sequence_sqrt(snpp, trackTable[i], sequenceLength);
+      audiodb_sequence_sum(snpp, trackTable[i], sequenceLength);
+      audiodb_sequence_sqrt(snpp, trackTable[i], sequenceLength);
 
       if (usingPower) {
-	sequence_sum(sppp, trackTable[i], sequenceLength);
-        sequence_average(sppp, trackTable[i], sequenceLength);
+	audiodb_sequence_sum(sppp, trackTable[i], sequenceLength);
+        audiodb_sequence_average(sppp, trackTable[i], sequenceLength);
       }
     }
     snpp += trackTable[i];