diff close.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 78fed0d4c108
children 62a0515f59be
line wrap: on
line diff
--- a/close.cpp	Wed Dec 03 14:53:20 2008 +0000
+++ b/close.cpp	Wed Dec 03 17:40:15 2008 +0000
@@ -1,11 +1,13 @@
 #include "audioDB.h"
 extern "C" {
 #include "audioDB_API.h"
+#include "audioDB-internals.h"
 }
 
 void audiodb_close(adb_t *adb) {
   free(adb->path);
   free(adb->header);
+  delete adb->keys;
   close(adb->fd);
   free(adb);
 }