From 39c0dfbc9c4279e519841afae5c7413b1bdf56d8 Mon Sep 17 00:00:00 2001 From: Soikk Date: Thu, 5 May 2022 18:45:45 +0200 Subject: More quality of life changes --- include/db.h | 20 ++++++++++++++++++++ include/parser.h | 17 +++++++++++++++++ include/repl.h | 20 ++++++++++++++++++++ include/storage.h | 26 ++++++++++++++++++++++++++ include/str.h | 14 ++++++++++++++ include/strnatcmp.h | 31 +++++++++++++++++++++++++++++++ 6 files changed, 128 insertions(+) create mode 100644 include/db.h create mode 100644 include/parser.h create mode 100644 include/repl.h create mode 100644 include/storage.h create mode 100644 include/str.h create mode 100644 include/strnatcmp.h (limited to 'include') diff --git a/include/db.h b/include/db.h new file mode 100644 index 0000000..a5fca10 --- /dev/null +++ b/include/db.h @@ -0,0 +1,20 @@ +#ifndef DB_H +#define DB_H + +#include +#include +#include +#include +#include +#include + + +#include "strnatcmp.h" + +#include "repl.h" +#include "parser.h" +#include "storage.h" +#include "str.h" + + +#endif \ No newline at end of file diff --git a/include/parser.h b/include/parser.h new file mode 100644 index 0000000..2e46967 --- /dev/null +++ b/include/parser.h @@ -0,0 +1,17 @@ +#ifndef PARSER_H +#define PARSER_H + +#include "db.h" + + +typedef enum { + META_COMMAND_SUCCESS, + META_COMMAND_FAIL, +} metaCommandStatus; + + +int handleMetaCommand(inputBuffer *in); + +int handleInput(inputBuffer *in); + +#endif \ No newline at end of file diff --git a/include/repl.h b/include/repl.h new file mode 100644 index 0000000..9c9fb8e --- /dev/null +++ b/include/repl.h @@ -0,0 +1,20 @@ +#ifndef REPL_H +#define REPL_H + +#include "db.h" + +typedef struct { + char *buffer; + ssize_t inputSize; +} inputBuffer; + + +inputBuffer *newInputBuffer(void); + +void freeInputBuffer(inputBuffer *in); + +void getInput(inputBuffer *in); + +void prompt(void); + +#endif \ No newline at end of file diff --git a/include/storage.h b/include/storage.h new file mode 100644 index 0000000..507c733 --- /dev/null +++ b/include/storage.h @@ -0,0 +1,26 @@ +#ifndef STORAGE_H +#define STORAGE_H + +#include "db.h" + +#define MAXPATH 4096 +#define MAXTAGS 4096 + + +// When intializing the struct, it is recommended +// to also initialize numTags and lenTags +typedef struct{ + char path[MAXPATH]; + char tags[MAXTAGS]; + uint16_t numTags; + uint16_t lenTags; +} row; + + +row *newRow(const char *path); + +void insertTag(row *r, char *tag); + +void removeTag(row *r, char *tag); + +#endif \ No newline at end of file diff --git a/include/str.h b/include/str.h new file mode 100644 index 0000000..ffda145 --- /dev/null +++ b/include/str.h @@ -0,0 +1,14 @@ +#ifndef STRINGS_H +#define STRINGS_H + +#include "db.h" + + +uint16_t len(const char *s); + +bool sameStr(const char *s1, const char *s2); + +ssize_t strInTags(const char *tags, int n, const char *ndl, int m, char sep); + + +#endif \ No newline at end of file diff --git a/include/strnatcmp.h b/include/strnatcmp.h new file mode 100644 index 0000000..9d98198 --- /dev/null +++ b/include/strnatcmp.h @@ -0,0 +1,31 @@ +/* -*- mode: c; c-file-style: "k&r" -*- + + strnatcmp.c -- Perform 'natural order' comparisons of strings in C. + Copyright (C) 2000, 2004 by Martin Pool + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + + +/* CUSTOMIZATION SECTION + * + * You can change this typedef, but must then also change the inline + * functions in strnatcmp.c */ +typedef char nat_char; + +int strnatcmp(nat_char const *a, nat_char const *b); +int strnatcasecmp(nat_char const *a, nat_char const *b); \ No newline at end of file -- cgit v1.2.3