annotate status.cpp @ 507:e7fd50483311

Free bits of the datum constructed in audioDB::query. We're not quite safe: error calls between allocation of some of these bits and pieces and their use will cause failure... but not freeing things here is definitely wrong.
author mas01cr
date Tue, 13 Jan 2009 21:37:10 +0000
parents 342822c2d49a
children cc2b97d020b1
rev   line source
mas01cr@498 1 #include "audioDB.h"
mas01cr@498 2 extern "C" {
mas01cr@498 3 #include "audioDB_API.h"
mas01cr@498 4 #include "audioDB-internals.h"
mas01cr@498 5 }
mas01cr@498 6
mas01cr@498 7 int audiodb_status(adb_t *adb, adb_status_t *status) {
mas01cr@498 8 /* FIXME: it would be nice to be able to test for "is this database
mas01cr@498 9 pointer valid", but at the moment we punt that to memory
mas01cr@498 10 discipline. */
mas01cr@498 11
mas01cr@498 12 unsigned dudCount = 0;
mas01cr@498 13 unsigned nullCount = 0;
mas01cr@498 14
mas01cr@498 15 for(unsigned k = 0; k < adb->header->numFiles; k++) {
mas01cr@498 16 /* FIXME: this bare "16" here reveals a problem (or maybe two).
mas01cr@498 17 * 16 here means the default value of the sequenceLength parameter
mas01cr@498 18 * initializer (both in C++ and corresponding to the "-l" or
mas01cr@498 19 * "--sequencelength" command-line argument).
mas01cr@498 20 *
mas01cr@498 21 * The problem is that the API as currently designed provides no
mas01cr@498 22 * way to pass that information in to this routine; there's no
mas01cr@498 23 * input parameter; nor is there in the SOAP version of this
mas01cr@498 24 * query. However, there /is/ a way to pass that information on
mas01cr@498 25 * the command-line -- though that codepath is completely
mas01cr@498 26 * untested. I can see that it might be useful to provide this
mas01cr@498 27 * information, but at present it's probably completely unused, so
mas01cr@498 28 * the compromise for now is to hardwire the 16.
mas01cr@498 29 */
mas01cr@498 30 if((*adb->track_lengths)[k] < 16) {
mas01cr@498 31 dudCount++;
mas01cr@498 32 if(!(*adb->track_lengths)[k]) {
mas01cr@498 33 nullCount++;
mas01cr@498 34 }
mas01cr@498 35 }
mas01cr@498 36 }
mas01cr@498 37
mas01cr@498 38 status->numFiles = adb->header->numFiles;
mas01cr@498 39 status->dim = adb->header->dim;
mas01cr@498 40 status->length = adb->header->length;
mas01cr@498 41 status->dudCount = dudCount;
mas01cr@498 42 status->nullCount = nullCount;
mas01cr@498 43 status->flags = adb->header->flags;
mas01cr@498 44 status->data_region_size = adb->header->timesTableOffset - adb->header->dataOffset;
mas01cr@498 45
mas01cr@498 46 return 0;
mas01cr@498 47 }
mas01cr@498 48