aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSoikk2022-05-05 18:45:45 +0200
committerSoikk2022-05-05 18:45:45 +0200
commit39c0dfbc9c4279e519841afae5c7413b1bdf56d8 (patch)
tree8fbe479baf22778911b75ec3d06f05de584b6bce /include
parent6afe3cc8ec6c009a43950bdbe138cbc2d7a88a4d (diff)
downloadsoikk-DB-39c0dfbc9c4279e519841afae5c7413b1bdf56d8.tar.xz
soikk-DB-39c0dfbc9c4279e519841afae5c7413b1bdf56d8.tar.zst
More quality of life changes
Diffstat (limited to 'include')
-rw-r--r--include/db.h20
-rw-r--r--include/parser.h17
-rw-r--r--include/repl.h20
-rw-r--r--include/storage.h26
-rw-r--r--include/str.h14
-rw-r--r--include/strnatcmp.h31
6 files changed, 128 insertions, 0 deletions
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 <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+
+#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 <mbp sourcefrog net>
+
+ 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