Mercurial > hg > audiodb
view libtests/0002/prog1.c @ 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 | 94c18f128ce8 |
children | e072aa1611f5 342822c2d49a |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sysexits.h> #include <fcntl.h> #include <dirent.h> #include <unistd.h> #include <sys/stat.h> /* * * #define NDEBUG * * */ #include <assert.h> #include "../../audioDB_API.h" #include "../test_utils_lib.h" int main(int argc, char **argv){ int returnval=0; adb_ptr mydbp={0}; adb_status_t mystatus={0}; char * databasename="testdb"; //. ../test-utils.sh // //if [ -f testdb ]; then rm -f testdb; fi // /* remove old directory */ clean_remove_db(databasename); /* create new db */ //${AUDIODB} -N -d testdb // mydbp=audiodb_create(databasename,0,0,0); //# FIXME: at some point we will want to test that some relevant //# information is being printed //${AUDIODB} -S -d testdb //${AUDIODB} -d testdb -S if(audiodb_status(mydbp,&mystatus)){ returnval=-1; } /* not relevent, caught by API */ //# should fail (no db given) //expect_clean_error_exit ${AUDIODB} -S audiodb_close(mydbp); return(returnval); }