Mercurial > hg > audiodb
view power.cpp @ 402:58b88ab69424 api-inversion
Move the struct adb definition from the auidioDB_API.h into the
audioDB-internals.h header file, leaving only the typedef behind.
Thus a user of the API sees only an incomplete type, which cannot be
instantiated (but /pointers/ to it can); there's then less temptation to
break the abstraction barrier by using structure fields in client code.
Not only that, but we can now safely put C++ stuff in the structure.
Take advantage of this by putting a std::set<std::string> in there, to
hold all the keys currently in the database; populate this field on
audiodb_open() (and delete it on audiodb_close). This will be useful
when we come to implement variants of audiodb_insert().
author | mas01cr |
---|---|
date | Wed, 03 Dec 2008 17:40:15 +0000 |
parents | a8a5f2ca5380 |
children | 7038f31124d1 |
line wrap: on
line source
#include "audioDB.h" extern "C" { #include "audioDB_API.h" #include "audioDB-internals.h" } int audiodb_power(adb_t *adb) { /* FIXME: we should probably include in adb_t information about * which mode (O_RDONLY|O_RDWR) the database was opened, so that we * can check that it's writeable. */ if(adb->header->length > 0) { return 1; } adb->header->flags |= O2_FLAG_POWER; return audiodb_sync_header(adb); }