annotate liszt.cpp @ 546:e8193805ce42
multiprobeLSH
Rework new audiodb_track_id_datum_offset() and audiodb_insert_create_datum_offset() so that all offsets are in num_vectors. Internals of data storage are left the the methods to implement. If we are going to export these methods to the API, how do we expose the cache ? It needs to be passed back to the user and back in by the user on each call for caching to be re-entrant. No (intentional) functional changes this version.
author |
mas01mc |
date |
Sun, 08 Feb 2009 22:32:33 +0000 |
parents |
342822c2d49a |
children |
e18843dc0aea |
rev |
line source |
mas01cr@498
|
1 #include "audioDB.h"
|
mas01cr@498
|
2
|
mas01cr@498
|
3 void audioDB::liszt(const char* dbName, unsigned offset, unsigned numLines, adb__lisztResponse* adbLisztResponse){
|
mas01cr@498
|
4 if(!dbH) {
|
mas01cr@498
|
5 initTables(dbName, 0);
|
mas01cr@498
|
6 }
|
mas01cr@498
|
7
|
mas01cr@498
|
8 assert(trackTable && fileTable);
|
mas01cr@498
|
9
|
mas01cr@498
|
10 if(offset>dbH->numFiles){
|
mas01cr@498
|
11 char tmpStr[MAXSTR];
|
mas01cr@498
|
12 sprintf(tmpStr, "numFiles=%u, lisztOffset=%u", dbH->numFiles, offset);
|
mas01cr@498
|
13 error("listKeys offset out of range", tmpStr);
|
mas01cr@498
|
14 }
|
mas01cr@498
|
15
|
mas01cr@498
|
16 if(!adbLisztResponse){
|
mas01cr@498
|
17 for(Uns32T k=0; k<numLines && offset+k<dbH->numFiles; k++){
|
mas01cr@498
|
18 fprintf(stdout, "[%d] %s (%d)\n", offset+k, fileTable+(offset+k)*O2_FILETABLE_ENTRY_SIZE, trackTable[offset+k]);
|
mas01cr@498
|
19 }
|
mas01cr@498
|
20 }
|
mas01cr@498
|
21 else{
|
mas01cr@498
|
22 adbLisztResponse->result.Rkey = new char*[numLines];
|
mas01cr@498
|
23 adbLisztResponse->result.Rlen = new unsigned int[numLines];
|
mas01cr@498
|
24 Uns32T k = 0;
|
mas01cr@498
|
25 for( ; k<numLines && offset+k<dbH->numFiles; k++){
|
mas01cr@498
|
26 adbLisztResponse->result.Rkey[k] = new char[MAXSTR];
|
mas01cr@498
|
27 snprintf(adbLisztResponse->result.Rkey[k], O2_MAXFILESTR, "%s", fileTable+(offset+k)*O2_FILETABLE_ENTRY_SIZE);
|
mas01cr@498
|
28 adbLisztResponse->result.Rlen[k] = trackTable[offset+k];
|
mas01cr@498
|
29 }
|
mas01cr@498
|
30 adbLisztResponse->result.__sizeRkey = k;
|
mas01cr@498
|
31 adbLisztResponse->result.__sizeRlen = k;
|
mas01cr@498
|
32 }
|
mas01cr@498
|
33
|
mas01cr@498
|
34 }
|