Mercurial > hg > audiodb
diff liszt.cpp @ 498:342822c2d49a
Merge api-inversion branch (-r656:771, but I don't expect to return to
that branch) into the trunk.
I expect there to be minor performance regressions (e.g. in the SOAP
server index cacheing, which I have forcibly removed) and minor
unplugged memory leaks (e.g. in audioDB::query(), where I don't free up
the datum). I hope that these leaks and performance regressions can be
plugged in short order. I also expect that some (but maybe not all) of
the issues currently addressed in the memory-leaks branch are superseded
or fixed by this merge.
There remains much work to be done; go forth and do it.
author | mas01cr |
---|---|
date | Sat, 10 Jan 2009 16:47:57 +0000 |
parents | |
children | e18843dc0aea |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/liszt.cpp Sat Jan 10 16:47:57 2009 +0000 @@ -0,0 +1,34 @@ +#include "audioDB.h" + +void audioDB::liszt(const char* dbName, unsigned offset, unsigned numLines, adb__lisztResponse* adbLisztResponse){ + if(!dbH) { + initTables(dbName, 0); + } + + assert(trackTable && fileTable); + + if(offset>dbH->numFiles){ + char tmpStr[MAXSTR]; + sprintf(tmpStr, "numFiles=%u, lisztOffset=%u", dbH->numFiles, offset); + error("listKeys offset out of range", tmpStr); + } + + if(!adbLisztResponse){ + for(Uns32T k=0; k<numLines && offset+k<dbH->numFiles; k++){ + fprintf(stdout, "[%d] %s (%d)\n", offset+k, fileTable+(offset+k)*O2_FILETABLE_ENTRY_SIZE, trackTable[offset+k]); + } + } + else{ + adbLisztResponse->result.Rkey = new char*[numLines]; + adbLisztResponse->result.Rlen = new unsigned int[numLines]; + Uns32T k = 0; + for( ; k<numLines && offset+k<dbH->numFiles; k++){ + adbLisztResponse->result.Rkey[k] = new char[MAXSTR]; + snprintf(adbLisztResponse->result.Rkey[k], O2_MAXFILESTR, "%s", fileTable+(offset+k)*O2_FILETABLE_ENTRY_SIZE); + adbLisztResponse->result.Rlen[k] = trackTable[offset+k]; + } + adbLisztResponse->result.__sizeRkey = k; + adbLisztResponse->result.__sizeRlen = k; + } + +}