changeset 117:e800eac265c3 endian-neutral

Towards endian-neutrality, step 2. trackTable[x] is defined to be in network byte order on disk and in memory, so access through ntohl() and htonl() as appropriate.
author mas01cr
date Fri, 12 Oct 2007 11:37:38 +0000
parents 531ce5162861
children c0789661f232
files audioDB.cpp
diffstat 1 files changed, 51 insertions(+), 55 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB.cpp	Fri Oct 12 11:20:35 2007 +0000
+++ b/audioDB.cpp	Fri Oct 12 11:37:38 2007 +0000
@@ -574,9 +574,7 @@
   memcpy (db, dbH, sizeof(dbTableHeaderT));
 
   // Update track to file index map
-  //memcpy (db+trackTableOffset+(dbH->numFiles-1)*sizeof(unsigned), &numVectors, sizeof(unsigned));  
-  //memcpy (trackTable+dbH->numFiles-1, &numVectors, sizeof(unsigned));
-  *(trackTable + ntohl(dbH->numFiles) - 1) = numVectors;
+  *(trackTable + ntohl(dbH->numFiles) - 1) = htonl(numVectors);
 
   // Update the feature database
   memcpy (db+ntohl(dbH->dataOffset)+insertoffset, indata+sizeof(int), statbuf.st_size-sizeof(int));
@@ -795,9 +793,7 @@
 	memcpy (db, dbH, sizeof(dbTableHeaderT));
   
 	// Update track to file index map
-	//memcpy (db+trackTableOffset+(dbH->numFiles-1)*sizeof(unsigned), &numVectors, sizeof(unsigned));  
-	//memcpy (trackTable+dbH->numFiles-1, &numVectors, sizeof(unsigned));
-        *(trackTable + ntohl(dbH->numFiles) - 1) = numVectors;
+        *(trackTable + ntohl(dbH->numFiles) - 1) = htonl(numVectors);
 	
 	// Update the feature database
 	memcpy (db+ntohl(dbH->dataOffset)+insertoffset, indata+sizeof(int), statbuf.st_size-sizeof(int));
@@ -886,9 +882,9 @@
   unsigned dudCount=0;
   unsigned nullCount=0;
   for(unsigned k=0; k<ntohl(dbH->numFiles); k++){
-    if(trackTable[k]<sequenceLength){
+    if(ntohl(trackTable[k])<sequenceLength){
       dudCount++;
-      if(!trackTable[k])
+      if(!ntohl(trackTable[k]))
         nullCount++;
     }
   }
@@ -923,8 +919,8 @@
     initTables(dbName, 0, 0);
   
   for(unsigned k=0, j=0; k<ntohl(dbH->numFiles); k++){
-    cout << fileTable+k*O2_FILETABLESIZE << " " << trackTable[k] << endl;
-    j+=trackTable[k];
+    cout << fileTable+k*O2_FILETABLESIZE << " " << ntohl(trackTable[k]) << endl;
+    j+=ntohl(trackTable[k]);
   }
 
   status(dbName);
@@ -1101,10 +1097,10 @@
       // Scan for key
       unsigned cumTrack=0;
       for(l=0 ; l<ntohl(dbH->numFiles); l++){
-	cumTrack+=trackTable[l];
+	cumTrack+=ntohl(trackTable[l]);
 	if(sIndexes[k]<cumTrack){
 	  cout << fileTable+l*O2_FILETABLESIZE << " " << distances[k] << " " << qIndexes[k] << " " 
-	       << sIndexes[k]+trackTable[l]-cumTrack << endl;
+	       << sIndexes[k]+ntohl(trackTable[l])-cumTrack << endl;
 	  break;
 	}
       }
@@ -1132,13 +1128,13 @@
       adbQueryResult->Qpos[k]=qIndexes[k];
       unsigned cumTrack=0;
       for(l=0 ; l<ntohl(dbH->numFiles); l++){
-	cumTrack+=trackTable[l];
+	cumTrack+=ntohl(trackTable[l]);
 	if(sIndexes[k]<cumTrack){
 	  sprintf(adbQueryResult->Rlist[k], "%s", fileTable+l*O2_FILETABLESIZE);
 	  break;
 	}
       }
-      adbQueryResult->Spos[k]=sIndexes[k]+trackTable[l]-cumTrack;
+      adbQueryResult->Spos[k]=sIndexes[k]+ntohl(trackTable[l])-cumTrack;
     }
   }
   
@@ -1229,7 +1225,7 @@
     meanDBdur = new double[ntohl(dbH->numFiles)];
     for(k=0; k<ntohl(dbH->numFiles); k++){
       meanDBdur[k]=0.0;
-      for(j=0; j<trackTable[k]-1 ; j++)
+      for(j=0; j<ntohl(trackTable[k])-1 ; j++)
 	meanDBdur[k]+=timesTable[j+1]-timesTable[j];
       meanDBdur[k]/=j;
     }
@@ -1252,7 +1248,7 @@
   unsigned trackIndexOffset;
   for(k=0; k<ntohl(dbH->numFiles);k++){
     trackOffsetTable[k]=cumTrack;
-    cumTrack+=trackTable[k]*ntohl(dbH->dim);
+    cumTrack+=ntohl(trackTable[k])*ntohl(dbH->dim);
   }
 
   char nextKey[MAXSTR];
@@ -1271,7 +1267,7 @@
     trackOffset=trackOffsetTable[track];     // numDoubles offset
     trackIndexOffset=trackOffset/ntohl(dbH->dim); // numVectors offset
     if(verbosity>7) {
-      cerr << track << "." << trackOffset/(ntohl(dbH->dim)) << "." << trackTable[track] << " | ";cerr.flush();
+      cerr << track << "." << trackOffset/(ntohl(dbH->dim)) << "." << ntohl(trackTable[track]) << " | ";cerr.flush();
     }
 
     if(ntohl(dbH->flags) & O2_FLAG_L2NORM)
@@ -1283,7 +1279,7 @@
     else
       j=numVectors;
     while(j--){
-      k=trackTable[track];  // number of vectors in track
+      k=ntohl(trackTable[track]);  // number of vectors in track
       data=dataBuf+trackOffset; // data for track
       while(k--){
 	thisDist=0;
@@ -1306,7 +1302,7 @@
 		}
 		distances[n]=thisDist;
 		qIndexes[n]=numVectors-j-1;
-		sIndexes[n]=trackTable[track]-k-1;
+		sIndexes[n]=ntohl(trackTable[track])-k-1;
 		break;
 	      }
 	    }
@@ -1458,14 +1454,14 @@
   memcpy(sNorm, l2normTable, dbVectors*sizeof(double));
   double* snPtr = sNorm;
   for(i=0; i<ntohl(dbH->numFiles); i++){
-    if(trackTable[i]>=sequenceLength){
+    if(ntohl(trackTable[i])>=sequenceLength){
       tmp1=*snPtr;
       j=1;
       w=sequenceLength-1;
       while(w--)
 	*snPtr+=snPtr[j++];
       ps = snPtr+1;
-      w=trackTable[i]-sequenceLength; // +1 - 1
+      w=ntohl(trackTable[i])-sequenceLength; // +1 - 1
       while(w--){
 	tmp2=*ps;
 	*ps=*(ps-1)-tmp1+*(ps+sequenceLength-1);
@@ -1473,13 +1469,13 @@
 	ps++;
       }
       ps = snPtr;
-      w=trackTable[i]-sequenceLength+1;
+      w=ntohl(trackTable[i])-sequenceLength+1;
       while(w--){
 	*ps=sqrt(*ps);
 	ps++;
       }
     }
-    snPtr+=trackTable[i];
+    snPtr+=ntohl(trackTable[i]);
   }
   
   double* pn = sMeanL2;
@@ -1489,18 +1485,18 @@
   ps=sNorm;
   unsigned processedTracks=0;
   for(i=0; i<ntohl(dbH->numFiles); i++){
-    if(trackTable[i]>sequenceLength-1){
-      w = trackTable[i]-sequenceLength+1;
+    if(ntohl(trackTable[i])>sequenceLength-1){
+      w = ntohl(trackTable[i])-sequenceLength+1;
       pn = sMeanL2+i;
       *pn=0;
       while(w--)
 	if(*ps>0)
 	  *pn+=*ps++;
-      *pn/=trackTable[i]-sequenceLength+1;
+      *pn/=ntohl(trackTable[i])-sequenceLength+1;
       SILENCE_THRESH+=*pn;
       processedTracks++;
     }
-    ps = sNorm + trackTable[i];
+    ps = sNorm + ntohl(trackTable[i]);
   }
   if(verbosity>1) {
     cerr << "processedTracks: " << processedTracks << endl;
@@ -1603,7 +1599,7 @@
     assert(meanDBdur);
     for(k=0; k<ntohl(dbH->numFiles); k++){
       meanDBdur[k]=0.0;
-      for(j=0; j<trackTable[k]-1 ; j++)
+      for(j=0; j<ntohl(trackTable[k])-1 ; j++)
 	meanDBdur[k]+=timesTable[j+1]-timesTable[j];
       meanDBdur[k]/=j;
     }
@@ -1643,7 +1639,7 @@
   unsigned trackIndexOffset;
   for(k=0; k<ntohl(dbH->numFiles);k++){
     trackOffsetTable[k]=cumTrack;
-    cumTrack+=trackTable[k]*ntohl(dbH->dim);
+    cumTrack+=ntohl(trackTable[k])*ntohl(dbH->dim);
   }
 
   char nextKey [MAXSTR];
@@ -1671,28 +1667,28 @@
     trackOffset=trackOffsetTable[track];     // numDoubles offset
     trackIndexOffset=trackOffset/ntohl(dbH->dim); // numVectors offset
 
-    if(sequenceLength<=trackTable[track]){  // test for short sequences
+    if(sequenceLength<=ntohl(trackTable[track])){  // test for short sequences
       
       if(verbosity>7) {
-	cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";cerr.flush();
+	cerr << track << "." << trackIndexOffset << "." << ntohl(trackTable[track]) << " | ";cerr.flush();
       }
 		
       // Sum products matrix
       for(j=0; j<numVectors;j++){
-	D[j]=new double[trackTable[track]]; 
+	D[j]=new double[ntohl(trackTable[track])]; 
 	assert(D[j]);
 
       }
 
       // Matched filter matrix
       for(j=0; j<numVectors;j++){
-	DD[j]=new double[trackTable[track]];
+	DD[j]=new double[ntohl(trackTable[track])];
 	assert(DD[j]);
       }
 
       // Dot product
       for(j=0; j<numVectors; j++)
-	for(k=0; k<trackTable[track]; k++){
+	for(k=0; k<ntohl(trackTable[track]); k++){
 	  qp=query+j*ntohl(dbH->dim);
 	  sp=dataBuf+trackOffset+k*ntohl(dbH->dim);
 	  DD[j][k]=0.0; // Initialize matched filter array
@@ -1711,7 +1707,7 @@
 	  for(j=0; j<numVectors-w; j++){ 
 	    sp=DD[j];
 	    spd=D[j+w]+w;
-	    k=trackTable[track]-w;
+	    k=ntohl(trackTable[track])-w;
 	    while(k--)
 	      *sp+++=*spd++;
 	  }
@@ -1722,7 +1718,7 @@
 	  for(j=0; j<numVectors-w; j+=HOP_SIZE){
 	    sp=DD[j];
 	    spd=D[j+w]+w;
-	    for(k=0; k<trackTable[track]-w; k+=HOP_SIZE){
+	    for(k=0; k<ntohl(trackTable[track])-w; k+=HOP_SIZE){
 	      *sp+=*spd;
 	      sp+=HOP_SIZE;
 	      spd+=HOP_SIZE;
@@ -1746,7 +1742,7 @@
 
 	// Search for minimum distance by shingles (concatenated vectors)
 	for(j=0;j<=numVectors-wL;j+=HOP_SIZE)
-	  for(k=0;k<=trackTable[track]-wL;k+=HOP_SIZE){
+	  for(k=0;k<=ntohl(trackTable[track])-wL;k+=HOP_SIZE){
 	    thisDist=2-(2/(qNorm[j]*sNorm[trackIndexOffset+k]))*DD[j][k];
 	    if(verbosity>10) {
 	      cerr << thisDist << " " << qNorm[j] << " " << sNorm[trackIndexOffset+k] << endl;
@@ -1957,14 +1953,14 @@
   memcpy(sNorm, l2normTable, dbVectors*sizeof(double));
   double* snPtr = sNorm;
   for(i=0; i<ntohl(dbH->numFiles); i++){
-    if(trackTable[i]>=sequenceLength){
+    if(ntohl(trackTable[i])>=sequenceLength){
       tmp1=*snPtr;
       j=1;
       w=sequenceLength-1;
       while(w--)
 	*snPtr+=snPtr[j++];
       ps = snPtr+1;
-      w=trackTable[i]-sequenceLength; // +1 - 1
+      w=ntohl(trackTable[i])-sequenceLength; // +1 - 1
       while(w--){
 	tmp2=*ps;
 	*ps=*(ps-1)-tmp1+*(ps+sequenceLength-1);
@@ -1972,13 +1968,13 @@
 	ps++;
       }
       ps = snPtr;
-      w=trackTable[i]-sequenceLength+1;
+      w=ntohl(trackTable[i])-sequenceLength+1;
       while(w--){
 	*ps=sqrt(*ps);
 	ps++;
       }
     }
-    snPtr+=trackTable[i];
+    snPtr+=ntohl(trackTable[i]);
   }
   
   double* pn = sMeanL2;
@@ -1988,18 +1984,18 @@
   ps=sNorm;
   unsigned processedTracks=0;
   for(i=0; i<ntohl(dbH->numFiles); i++){
-    if(trackTable[i]>sequenceLength-1){
-      w = trackTable[i]-sequenceLength+1;
+    if(ntohl(trackTable[i])>sequenceLength-1){
+      w = ntohl(trackTable[i])-sequenceLength+1;
       pn = sMeanL2+i;
       *pn=0;
       while(w--)
 	if(*ps>0)
 	  *pn+=*ps++;
-      *pn/=trackTable[i]-sequenceLength+1;
+      *pn/=ntohl(trackTable[i])-sequenceLength+1;
       SILENCE_THRESH+=*pn;
       processedTracks++;
     }
-    ps = sNorm + trackTable[i];
+    ps = sNorm + ntohl(trackTable[i]);
   }
   if(verbosity>1) {
     cerr << "processedTracks: " << processedTracks << endl;
@@ -2102,7 +2098,7 @@
     assert(meanDBdur);
     for(k=0; k<ntohl(dbH->numFiles); k++){
       meanDBdur[k]=0.0;
-      for(j=0; j<trackTable[k]-1 ; j++)
+      for(j=0; j<ntohl(trackTable[k])-1 ; j++)
 	meanDBdur[k]+=timesTable[j+1]-timesTable[j];
       meanDBdur[k]/=j;
     }
@@ -2142,7 +2138,7 @@
   unsigned trackIndexOffset;
   for(k=0; k<ntohl(dbH->numFiles);k++){
     trackOffsetTable[k]=cumTrack;
-    cumTrack+=trackTable[k]*ntohl(dbH->dim);
+    cumTrack+=ntohl(trackTable[k])*ntohl(dbH->dim);
   }
 
   char nextKey [MAXSTR];
@@ -2170,28 +2166,28 @@
     trackOffset=trackOffsetTable[track];     // numDoubles offset
     trackIndexOffset=trackOffset/ntohl(dbH->dim); // numVectors offset
 
-    if(sequenceLength<=trackTable[track]){  // test for short sequences
+    if(sequenceLength<=ntohl(trackTable[track])){  // test for short sequences
       
       if(verbosity>7) {
-	cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";cerr.flush();
+	cerr << track << "." << trackIndexOffset << "." << ntohl(trackTable[track]) << " | ";cerr.flush();
       }
 
       // Sum products matrix
       for(j=0; j<numVectors;j++){
-	D[j]=new double[trackTable[track]]; 
+	D[j]=new double[ntohl(trackTable[track])]; 
 	assert(D[j]);
 
       }
 
       // Matched filter matrix
       for(j=0; j<numVectors;j++){
-	DD[j]=new double[trackTable[track]];
+	DD[j]=new double[ntohl(trackTable[track])];
 	assert(DD[j]);
       }
 
       // Dot product
       for(j=0; j<numVectors; j++)
-	for(k=0; k<trackTable[track]; k++){
+	for(k=0; k<ntohl(trackTable[track]); k++){
 	  qp=query+j*ntohl(dbH->dim);
 	  sp=dataBuf+trackOffset+k*ntohl(dbH->dim);
 	  DD[j][k]=0.0; // Initialize matched filter array
@@ -2210,7 +2206,7 @@
 	  for(j=0; j<numVectors-w; j++){ 
 	    sp=DD[j];
 	    spd=D[j+w]+w;
-	    k=trackTable[track]-w;
+	    k=ntohl(trackTable[track])-w;
 	    while(k--)
 	      *sp+++=*spd++;
 	  }
@@ -2221,7 +2217,7 @@
 	  for(j=0; j<numVectors-w; j+=HOP_SIZE){
 	    sp=DD[j];
 	    spd=D[j+w]+w;
-	    for(k=0; k<trackTable[track]-w; k+=HOP_SIZE){
+	    for(k=0; k<ntohl(trackTable[track])-w; k+=HOP_SIZE){
 	      *sp+=*spd;
 	      sp+=HOP_SIZE;
 	      spd+=HOP_SIZE;
@@ -2245,7 +2241,7 @@
 
 	// Search for minimum distance by shingles (concatenated vectors)
 	for(j=0;j<=numVectors-wL;j+=HOP_SIZE)
-	  for(k=0;k<=trackTable[track]-wL;k+=HOP_SIZE){
+	  for(k=0;k<=ntohl(trackTable[track])-wL;k+=HOP_SIZE){
 	    thisDist=2-(2/(qNorm[j]*sNorm[trackIndexOffset+k]))*DD[j][k];
 	    if(verbosity>10) {
 	      cerr << thisDist << " " << qNorm[j] << " " << sNorm[trackIndexOffset+k] << endl;