comparison query.cpp @ 459:fcc6f7c4856b api-inversion

No more global shingle vector of vectors. Convert audioDB::index_initialize_shingles and audioDB::index_norm_shingles to plain old functions. In doing so, the latter in particular acquires a silly argument list; we need that complexity for now because it's called both from audioDB::query (which we're currently inverting) and from audioDB::index (which is out of scope for now). The loss of the global vv thing made me check up on memory discipline [hence the new API function audiodb_query_free_results() as well as the internal audiodb_index_delete_shingles()]. It's not too bad, but there are plenty of leaks for those with time to do AUDIODB="valgrind --leak-check=full ../../audioDB" sh ./run-test.sh on their favourite test case. For example, the Radius reporters leak one triple per hit. (Honestly, C++ memory management is teh suck.)
author mas01cr
date Sun, 28 Dec 2008 22:43:50 +0000
parents 913a95f06998
children 17003dff8127
comparison
equal deleted inserted replaced
458:913a95f06998 459:fcc6f7c4856b
256 256
257 for(unsigned int k = 0; k < rs->nresults; k++) { 257 for(unsigned int k = 0; k < rs->nresults; k++) {
258 adb_result_t r = rs->results[k]; 258 adb_result_t r = rs->results[k];
259 reporter->add_point(audiodb_key_index(adb, r.key), r.qpos, r.ipos, r.dist); 259 reporter->add_point(audiodb_key_index(adb, r.key), r.qpos, r.ipos, r.dist);
260 } 260 }
261 audiodb_query_free_results(adb, &qspec, rs);
261 262
262 reporter->report(fileTable, adbQueryResponse); 263 reporter->report(fileTable, adbQueryResponse);
264 }
265
266 int audiodb_query_free_results(adb_t *adb, adb_query_spec_t *spec, adb_query_results_t *rs) {
267 free(rs->results);
268 free(rs);
269 return 0;
263 } 270 }
264 271
265 static void audiodb_initialize_arrays(adb_t *adb, adb_query_spec_t *spec, int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD) { 272 static void audiodb_initialize_arrays(adb_t *adb, adb_query_spec_t *spec, int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD) {
266 unsigned int j, k, l, w; 273 unsigned int j, k, l, w;
267 double *dp, *qp, *sp; 274 double *dp, *qp, *sp;