Mercurial > hg > audiodb
comparison 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 |
comparison
equal
deleted
inserted
replaced
401:a8a5f2ca5380 | 402:58b88ab69424 |
---|---|
1 #include "audioDB.h" | 1 #include "audioDB.h" |
2 extern "C" { | 2 extern "C" { |
3 #include "audioDB_API.h" | 3 #include "audioDB_API.h" |
4 #include "audioDB-internals.h" | |
4 } | 5 } |
5 | 6 |
6 void audiodb_close(adb_t *adb) { | 7 void audiodb_close(adb_t *adb) { |
7 free(adb->path); | 8 free(adb->path); |
8 free(adb->header); | 9 free(adb->header); |
10 delete adb->keys; | |
9 close(adb->fd); | 11 close(adb->fd); |
10 free(adb); | 12 free(adb); |
11 } | 13 } |