// // Case-based reasoner // #include #include #include #include "cbr.h" struct cbr_s { char filename[64]; char tablename[64]; char command[2048]; sqlite3 *db; unsigned int num_columns; }; int cbr_callback(void *notUsed, int argc, char **argv, char **azColName); cbr cbr_create(char * _filename, char * _tablename, char * _cols[], unsigned int _len) { cbr _cbr = (cbr) malloc(sizeof(struct cbr_s)); // copy filename unsigned int i=0; do { _cbr->filename[i] = _filename[i]; } while (_filename[i++] != '\0'); // copy tablename i=0; do { _cbr->tablename[i] = _tablename[i]; } while (_tablename[i++] != '\0'); _cbr->db = NULL; _cbr->num_columns = _len; // create table strcpy(_cbr->command, "CREATE TABLE "); strcat(_cbr->command, _tablename); strcat(_cbr->command, "("); for (i=0; i<_len; i++) { strcat(_cbr->command, _cols[i]); strcat(_cbr->command, " FLOAT"); if (i != _len-1) strcat(_cbr->command, ", "); } strcat(_cbr->command, ");"); printf("command : %s\n", _cbr->command); // execute command return _cbr; } void cbr_free(cbr _cbr) { // delete table here free(_cbr); } void cbr_print(cbr _cbr) { printf("database %s, table %s:\n", _cbr->filename, _cbr->tablename); } //static int cbr_callback(void *notUsed, int argc, char **argv, char **azColName) { return 0; } int cbr_search(cbr _cbr, char *_names[], int * _ops, float *_vals, unsigned int _n, float *_retvals) { // set up statement char* zErrMsg = NULL; //sqlite3_exec(_cbr->db, argv[2], callback, NULL, &zErrMsg); sqlite3_exec(_cbr->db, _cbr->command, cbr_callback, NULL, &zErrMsg); return 0; } int cbr_add_row(cbr _cbr, char *_cols[], float *_vals, unsigned int _len) { return 0; }