From 4b721332d570f53719894af922c22b7cba146b18 Mon Sep 17 00:00:00 2001 From: Soikk Date: Sat, 13 Aug 2022 18:49:30 +0200 Subject: Added primitive repl, delete functions for database and remove tag from file function. --- include/database.h | 14 +++++++++----- include/db.h | 6 +++--- include/parser.h | 26 +++++++++++++++++++++++--- include/repl.h | 6 +++--- include/storage.h | 8 ++++++++ 5 files changed, 46 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/database.h b/include/database.h index bd60e72..d5ad8e9 100644 --- a/include/database.h +++ b/include/database.h @@ -15,19 +15,25 @@ typedef struct database{ database *newDatabase(char *name); +int freeDatabase(database **db); + +int deleteDatabase(database **db); + uint64_t addFile(database *db, char *file); uint64_t addTag(database *db, char *tag); +int removeFile(database *db, char *file); + +int removeTag(database *db, char *tag); + int addFileTag(database *db, char *file, char *tag); int addFileTags(database *db, char *file, int ntags, ...); int addTagFiles(database *db, char *tag, int nfiles, ...); -int removeFile(database *db, char *file); - -int removeTag(database *db, char *tag); +int removeFileTag(database *db, char *file, char *tag); int searchFile(database *db, char *file, uint64_t n, uint64_t **r, uint64_t *rl); @@ -39,8 +45,6 @@ database *loadDatabase(const char* path); void printDatabase(database *db); -void debugAVLtree(node *n); - void debugDatabase(database *db); #endif diff --git a/include/db.h b/include/db.h index ccdfc11..2571d02 100644 --- a/include/db.h +++ b/include/db.h @@ -13,11 +13,11 @@ #include "strnatcmp.h" #include "crc64.h" -#include "repl.h" -#include "parser.h" +#include "str.h" #include "storage.h" #include "database.h" -#include "str.h" +#include "repl.h" +#include "parser.h" #include "bm.h" #endif diff --git a/include/parser.h b/include/parser.h index 2e46967..6b68b48 100644 --- a/include/parser.h +++ b/include/parser.h @@ -4,14 +4,34 @@ #include "db.h" -typedef enum { +#define NKEYWORDS 16 +#define EXIT_CODE 1 + +typedef enum{ + COMMAND_EXIT, COMMAND_DEBUG, + COMMAND_CREATE, COMMAND_DELETE, COMMAND_OPEN, COMMAND_SAVE, COMMAND_CLOSE, + COMMAND_ADDF, COMMAND_ADDT, COMMAND_DELETEF, COMMAND_DELETET, + COMMAND_TAG, COMMAND_REMOVE, + COMMAND_SHOW, COMMAND_SHOWT, COMMAND_SHOWF, +} COMMANDS; + +typedef enum{ META_COMMAND_SUCCESS, META_COMMAND_FAIL, } metaCommandStatus; +typedef struct{ + uint64_t argc; + char **argv; +} argList; + + +argList *newArgList(void); + +argList *splitInput(inputBuffer *in); int handleMetaCommand(inputBuffer *in); -int handleInput(inputBuffer *in); +int handleInput(argList *args, database **db); -#endif \ No newline at end of file +#endif diff --git a/include/repl.h b/include/repl.h index 26abe9b..f9f0510 100644 --- a/include/repl.h +++ b/include/repl.h @@ -4,9 +4,9 @@ #include "db.h" -typedef struct { +typedef struct{ char *buffer; - ssize_t inputSize; + int64_t inputSize; } inputBuffer; @@ -16,6 +16,6 @@ void freeInputBuffer(inputBuffer *in); void getInput(inputBuffer *in); -void prompt(void); +void prompt(database *db); #endif diff --git a/include/storage.h b/include/storage.h index 8edf8b0..e46c9a8 100644 --- a/include/storage.h +++ b/include/storage.h @@ -92,6 +92,8 @@ typedef node* tree; ltable *newLtable(uint64_t size); +int deleteLtable(ltable **lt); + int insertLtable(ltable *lt, char *str); int removeLtable(ltable *lt, char *str); @@ -106,6 +108,8 @@ ltable *loadLtable(FILE *fp); ctable *newCtable(uint64_t size); +int deleteCtable(ctable **ct); + int insertCtable(ctable *ct, uint64_t n); int removeCtable(ctable *ct, uint64_t n); @@ -120,6 +124,8 @@ ctable *loadCtable(FILE *fp); mtable *newMtable(uint64_t size); +int deleteMtable(mtable **mt); + int insertMtable(mtable *mt, relation r); int removeMtable(mtable *mt, relation r); @@ -138,6 +144,8 @@ mtable *loadMtable(FILE *fp); node *newNode(uint64_t h, uint64_t i); +int deleteTree(tree *root); + node *insertNode(node *r, uint64_t h, uint64_t i); node *removeNode(node *r, uint64_t h); -- cgit v1.2.3