3. wmp_core
3.1. Struct
SQLite data is indirectly handled inside of a struct called
wmp_core. That's all it does for now, but I fully expect
things to change in the future.
<<typedefs>>=
typedef struct wmp_core wmp_core;<<structs>>=
struct wmp_core {
    sqlite3 *db;
};3.2. DONE Opening the database
CLOSED: [2019-08-31 Sat 06:09]
The database handled is opened with the function
wmp_core_open.
<<function_declarations>>=
int wmp_core_open(wmp_core *core, const char *filename);<<functions>>=
int wmp_core_open(wmp_core *core, const char *filename)
{
    sqlite3 *db;
    int rc;
    FILE *fp;
    fp = fopen(filename, "r");
    if (fp == NULL) {
        fprintf(stderr,
                "Database %s not found.\n",
                filename);
        return 0;
    }
    fclose(fp);
    core->db = NULL;
    rc = sqlite3_open(filename, &db);
    if (rc) {
        fprintf(stderr,
                "Could not open database: %s",
                sqlite3_errmsg(db));
        sqlite3_close(db);
        return 0;
    }
    core->db = db;
    return 1;
}3.3. DONE Closing the database
CLOSED: [2019-08-31 Sat 06:10]
The database handle is closed with the function
wmp_core_close.
<<function_declarations>>=
void wmp_core_close(wmp_core *core);<<functions>>=
void wmp_core_close(wmp_core *core)
{
    sqlite3_close(core->db);
}3.4. DONE Getting SQLite data type
CLOSED: [2019-08-31 Sat 06:13]
Retrieved using the function wmp_core_db.
This will only be defined if the sqlite3 header
file is included before this header. Otherwise,
including sqlite3 would be a prereq for anything
wanting to include core.h.
<<function_declarations>>=
#ifdef SQLITE3_H
sqlite3 * wmp_core_db(wmp_core *core);
#endif<<functions>>=
sqlite3 * wmp_core_db(wmp_core *core)
{
    return core->db;
}3.5. DONE Default Filename
CLOSED: [2019-08-31 Sat 06:21] To make the CLI more terse, a default filename is used, which can be configured through command line flags.
3.6. Global Definition
<<constants>>=
const char *db_filename = "a.db";3.7. Setters/Getters
<<function_declarations>>=
const char * wmp_filename_get(void);
void wmp_filename_set(const char *filename);<<functions>>=
const char * wmp_filename_get(void)
{
    return db_filename;
}
void wmp_filename_set(const char *filename)
{
    db_filename = filename;
}prev | home | next