comparison audioDB.cpp @ 385:4e68f7d4d524 api-inversion

Invert audiodb_create() / audioDB::create(). (This was straightforward, because audioDB::create() doesn't depend on having any kind of state or reading it from disk, except of course for the locks. New global functions acquire_lock() and divest_lock() [silly name, I know], to be used both within audioDB::get_lock() and audioDB::release_lock() and within (inverted) API functions directly. Eventually the audioDB:: versions will be able to go away entirely)
author mas01cr
date Fri, 21 Nov 2008 15:22:15 +0000
parents 8425d05eda33
children f6aa8c5cd865
comparison
equal deleted inserted replaced
384:25a4d1799c08 385:4e68f7d4d524
1 #include "audioDB.h" 1 #include "audioDB.h"
2 extern "C" {
3 #include "audioDB_API.h"
4 }
2 5
3 LSH* SERVER_LSH_INDEX_SINGLETON; 6 LSH* SERVER_LSH_INDEX_SINGLETON;
4 char* SERVER_ADB_ROOT; 7 char* SERVER_ADB_ROOT;
5 char* SERVER_ADB_FEATURE_ROOT; 8 char* SERVER_ADB_FEATURE_ROOT;
6 9
838 } 841 }
839 dbH->flags |= O2_FLAG_POWER; 842 dbH->flags |= O2_FLAG_POWER;
840 memcpy(db, dbH, O2_HEADERSIZE); 843 memcpy(db, dbH, O2_HEADERSIZE);
841 } 844 }
842 845
846 void audioDB::create(const char *dbName) {
847 if(!audiodb_create(dbName, datasize, ntracks, datadim)) {
848 error("Failed to create database file", dbName, "");
849 }
850 }
851
843 // Unit norm block of features 852 // Unit norm block of features
844 853
845 /* FIXME: in fact this does not unit norm a block of features, it just 854 /* FIXME: in fact this does not unit norm a block of features, it just
846 records the L2 norms somewhere. unitNorm() does in fact unit norm 855 records the L2 norms somewhere. unitNorm() does in fact unit norm
847 a block of features. */ 856 a block of features. */
902 extern "C" { 911 extern "C" {
903 912
904 /* for API questions contact 913 /* for API questions contact
905 * Christophe Rhodes c.rhodes@gold.ac.uk 914 * Christophe Rhodes c.rhodes@gold.ac.uk
906 * Ian Knopke mas01ik@gold.ac.uk, ian.knopke@gmail.com */ 915 * Ian Knopke mas01ik@gold.ac.uk, ian.knopke@gmail.com */
907
908 #include "audioDB_API.h"
909
910 adb_ptr audiodb_create(const char *path, unsigned datasize, unsigned ntracks, unsigned datadim) {
911 const char *argv[12];
912 int argvctr=0;
913 char tempstr1[200];
914 char tempstr2[200];
915 char tempstr3[200];
916 int apierror=0;
917
918
919 argv[argvctr++] = "audioDB";
920 argv[argvctr++] = "--NEW";
921 argv[argvctr++] = "-d";
922 argv[argvctr++] = path;
923
924 if (datasize >0){
925 argv[argvctr++]="--datasize";
926 snprintf(tempstr1,sizeof(tempstr1),"%u",datasize);
927 argv[argvctr++]=tempstr1;
928 }
929
930 if (ntracks >0){
931 argv[argvctr++]="--ntracks";
932 snprintf(tempstr2,sizeof(tempstr2),"%u",ntracks);
933 argv[argvctr++]=tempstr2;
934 }
935
936 if (datadim > 0){
937 argv[argvctr++]="--datadim";
938 snprintf(tempstr3,sizeof(tempstr3),"%u",datadim);
939 argv[argvctr++]=tempstr3;
940 }
941
942 argv[argvctr]='\0';
943
944 audioDB::audioDB(argvctr, argv, &apierror);
945
946 if (!apierror){
947 return audiodb_open(path);
948 }
949
950 /* database exists, so fail and pass NULL */
951 return NULL;
952 }
953
954
955 916
956 int audiodb_insert(adb_ptr mydb, adb_insert_ptr ins) { 917 int audiodb_insert(adb_ptr mydb, adb_insert_ptr ins) {
957 const char *argv[15]; 918 const char *argv[15];
958 int argvctr=0; 919 int argvctr=0;
959 int apierror=0; 920 int apierror=0;