diff --git a/Database Abstraction/cdb_database.c b/Database Abstraction/cdb_database.c new file mode 100644 index 0000000..7d010c8 --- /dev/null +++ b/Database Abstraction/cdb_database.c @@ -0,0 +1,20 @@ +#include "cdb_database.h" +#include "../File-Page Abstraction/cdb_file-page.h" + +struct db_Database_impl { + char * directory; + db_Table * tables; +}; + +struct db_Table_impl { + char * name; + db_Database database; + db_Column * columns; + fp_File data; + fp_File variableData; +}; + +struct db_Data_impl { + db_Table table; + void * data; +}; \ No newline at end of file diff --git a/Database Abstraction/cdb_database.h b/Database Abstraction/cdb_database.h new file mode 100644 index 0000000..3c3e3c1 --- /dev/null +++ b/Database Abstraction/cdb_database.h @@ -0,0 +1,33 @@ +typedef struct db_Database_impl * db_Database; +typedef struct db_Table_impl * db_Table; +typedef struct db_Data_impl * db_Data; +typedef int db_Error; + +typedef enum { + BINARY8, BINARY16, BINARY32, BINARY64, BINARYREF +} db_ColumnType; + +typedef struct { + char * name; + db_ColumnType type; +} db_Column; + +// Creates new database in specified directory +db_Database db_databaseNew(const char * directory); + +// Closes specified Database and frees memory +void db_databaseClose(db_Database db); + +// Creates, gets, renames, closes and deletes a Table +db_Error db_tableNew(db_Database db, char * name, db_Column * columns, unsigned int count); +db_Error db_tableRename(db_Table table); +db_Error db_tableDelete(db_Table table); +db_Error db_tableClose(db_Table table); +db_Table db_tableGet(char * name); + +// Creates empty new Data +db_Data db_tableEntryNew(db_Table table); +db_Error db_tableEntrySet(db_Data entry, char * columnName, void * data); +db_Error db_tableEntryAdd(db_Table table, db_Data data); +unsigned long db_tableSize(db_Table table); +db_Error db_tableClear(db_Table table); diff --git a/File-Page Abstraction/cdb_file-page.c b/File-Page Abstraction/cdb_file-page.c index d1ffbcc..e50eb6f 100644 --- a/File-Page Abstraction/cdb_file-page.c +++ b/File-Page Abstraction/cdb_file-page.c @@ -1,5 +1,5 @@ #include "cdb_file-page.h" -#include "../System Abstraction/cdb_sustem.h" +#include "../System Abstraction/cdb_system.h" struct fp_File_impl{ sys_File file; diff --git a/File-Page Abstraction/cdb_file-page.h b/File-Page Abstraction/cdb_file-page.h index da83e11..78a08d4 100644 --- a/File-Page Abstraction/cdb_file-page.h +++ b/File-Page Abstraction/cdb_file-page.h @@ -11,9 +11,6 @@ void fp_fileSetPageSize(fp_File file, unsigned long pageSize); //negative values indicate the removable of the latest pages; so this library doesn't need more functions void * fp_fileAppendPages(fp_File file, long numberOfPages); - void * fp_fileToMemory(fp_File file); - void fp_fileFlush(fp_File file); - void fp_fileClose(fp_File file); \ No newline at end of file diff --git a/System Abstraction/linux/cdb_memroy.c b/System Abstraction/linux/cdb_memory.c similarity index 100% rename from System Abstraction/linux/cdb_memroy.c rename to System Abstraction/linux/cdb_memory.c diff --git a/System Abstraction/win32/cdb_memroy.c b/System Abstraction/win32/cdb_memory.c similarity index 100% rename from System Abstraction/win32/cdb_memroy.c rename to System Abstraction/win32/cdb_memory.c