annotate status.cpp @ 509:cc2b97d020b1

Code rearrangements to tease apart library code from C++ audioDB code. There should be precisely no functional changes in this commit. Instead, the only thing that has happened is that all the abstraction violation and other horribleness is concentrated in one place: the include of "audioDB-internals.h" in audioDB.h -- the separation will be complete once that include can be removed. This include is necessary because the command-line binary / SOAP server still does some things directly rather than through an API: not least of which the operations that have not yet been integrated into the API yet, but also some messing around with constants, flags and nominally internal functions. The intent is to remove as many of these as possible and think quite hard about the rest. In the meantime, the library is now much more self-contained: the only things it uses are in the audioDB_API.h and audioDB-internals.h headers; thus there are fewer nasty surprises lurking for readers of the code. The Makefile has been adjusted to take advantage of this rearrangement in the dependencies.
author mas01cr
date Thu, 15 Jan 2009 13:57:33 +0000
parents 342822c2d49a
children
rev   line source
mas01cr@498 1 extern "C" {
mas01cr@498 2 #include "audioDB_API.h"
mas01cr@509 3 }
mas01cr@498 4 #include "audioDB-internals.h"
mas01cr@498 5
mas01cr@498 6 int audiodb_status(adb_t *adb, adb_status_t *status) {
mas01cr@498 7 /* FIXME: it would be nice to be able to test for "is this database
mas01cr@498 8 pointer valid", but at the moment we punt that to memory
mas01cr@498 9 discipline. */
mas01cr@498 10
mas01cr@498 11 unsigned dudCount = 0;
mas01cr@498 12 unsigned nullCount = 0;
mas01cr@498 13
mas01cr@498 14 for(unsigned k = 0; k < adb->header->numFiles; k++) {
mas01cr@498 15 /* FIXME: this bare "16" here reveals a problem (or maybe two).
mas01cr@498 16 * 16 here means the default value of the sequenceLength parameter
mas01cr@498 17 * initializer (both in C++ and corresponding to the "-l" or
mas01cr@498 18 * "--sequencelength" command-line argument).
mas01cr@498 19 *
mas01cr@498 20 * The problem is that the API as currently designed provides no
mas01cr@498 21 * way to pass that information in to this routine; there's no
mas01cr@498 22 * input parameter; nor is there in the SOAP version of this
mas01cr@498 23 * query. However, there /is/ a way to pass that information on
mas01cr@498 24 * the command-line -- though that codepath is completely
mas01cr@498 25 * untested. I can see that it might be useful to provide this
mas01cr@498 26 * information, but at present it's probably completely unused, so
mas01cr@498 27 * the compromise for now is to hardwire the 16.
mas01cr@498 28 */
mas01cr@498 29 if((*adb->track_lengths)[k] < 16) {
mas01cr@498 30 dudCount++;
mas01cr@498 31 if(!(*adb->track_lengths)[k]) {
mas01cr@498 32 nullCount++;
mas01cr@498 33 }
mas01cr@498 34 }
mas01cr@498 35 }
mas01cr@498 36
mas01cr@498 37 status->numFiles = adb->header->numFiles;
mas01cr@498 38 status->dim = adb->header->dim;
mas01cr@498 39 status->length = adb->header->length;
mas01cr@498 40 status->dudCount = dudCount;
mas01cr@498 41 status->nullCount = nullCount;
mas01cr@498 42 status->flags = adb->header->flags;
mas01cr@498 43 status->data_region_size = adb->header->timesTableOffset - adb->header->dataOffset;
mas01cr@498 44
mas01cr@498 45 return 0;
mas01cr@498 46 }
mas01cr@498 47