Mercurial > hg > audiodb
diff status.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 | cc2b97d020b1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/status.cpp Sat Jan 10 16:47:57 2009 +0000 @@ -0,0 +1,48 @@ +#include "audioDB.h" +extern "C" { +#include "audioDB_API.h" +#include "audioDB-internals.h" +} + +int audiodb_status(adb_t *adb, adb_status_t *status) { + /* FIXME: it would be nice to be able to test for "is this database + pointer valid", but at the moment we punt that to memory + discipline. */ + + unsigned dudCount = 0; + unsigned nullCount = 0; + + for(unsigned k = 0; k < adb->header->numFiles; k++) { + /* FIXME: this bare "16" here reveals a problem (or maybe two). + * 16 here means the default value of the sequenceLength parameter + * initializer (both in C++ and corresponding to the "-l" or + * "--sequencelength" command-line argument). + * + * The problem is that the API as currently designed provides no + * way to pass that information in to this routine; there's no + * input parameter; nor is there in the SOAP version of this + * query. However, there /is/ a way to pass that information on + * the command-line -- though that codepath is completely + * untested. I can see that it might be useful to provide this + * information, but at present it's probably completely unused, so + * the compromise for now is to hardwire the 16. + */ + if((*adb->track_lengths)[k] < 16) { + dudCount++; + if(!(*adb->track_lengths)[k]) { + nullCount++; + } + } + } + + status->numFiles = adb->header->numFiles; + status->dim = adb->header->dim; + status->length = adb->header->length; + status->dudCount = dudCount; + status->nullCount = nullCount; + status->flags = adb->header->flags; + status->data_region_size = adb->header->timesTableOffset - adb->header->dataOffset; + + return 0; +} +
