From d6ba30b94a24607bce5db5e706eb20cc051a98f0 Mon Sep 17 00:00:00 2001 From: A404M Date: Wed, 18 Sep 2024 19:46:38 +0330 Subject: initial commit --- src/utils/file.c | 22 ++++++++++++++++++++++ src/utils/file.h | 3 +++ src/utils/memory/memory.c | 22 ++++++++++++++++++++++ src/utils/memory/memory.h | 6 ++++++ src/utils/time.c | 9 +++++++++ src/utils/time.h | 7 +++++++ src/utils/types.h | 18 ++++++++++++++++++ 7 files changed, 87 insertions(+) create mode 100644 src/utils/file.c create mode 100644 src/utils/file.h create mode 100644 src/utils/memory/memory.c create mode 100644 src/utils/memory/memory.h create mode 100644 src/utils/time.c create mode 100644 src/utils/time.h create mode 100644 src/utils/types.h (limited to 'src/utils') diff --git a/src/utils/file.c b/src/utils/file.c new file mode 100644 index 0000000..410c218 --- /dev/null +++ b/src/utils/file.c @@ -0,0 +1,22 @@ +#include "file.h" +#include +#include + +char *read_whole_file(const char *path) { + FILE *file = fopen(path, "r"); + if (!file) { + fprintf(stderr, "could not open file at path '%s'\n", path); + return NULL; + } + fseek(file, 0, SEEK_END); + const size_t file_size = ftell(file); + fseek(file, 0, SEEK_SET); + + char *str = a404m_malloc((file_size + 1) * sizeof(char)); + + fread(str, file_size, 1, file); + str[file_size] = '\0'; + + fclose(file); + return str; +} diff --git a/src/utils/file.h b/src/utils/file.h new file mode 100644 index 0000000..541e69d --- /dev/null +++ b/src/utils/file.h @@ -0,0 +1,3 @@ +#pragma once + +extern char *read_whole_file(const char *path); diff --git a/src/utils/memory/memory.c b/src/utils/memory/memory.c new file mode 100644 index 0000000..d793bc7 --- /dev/null +++ b/src/utils/memory/memory.c @@ -0,0 +1,22 @@ +#include "memory.h" + +#include + +void *a404m_malloc(size_t size) { + if (size == 0) { + return NULL; + } else { + return malloc(size); + } +} + +void *a404m_realloc(void *restrict pointer, size_t size) { + if (size == 0) { + free(pointer); + return NULL; + } else if(pointer != NULL) { + return realloc(pointer, size); + }else{ + return malloc(size); + } +} diff --git a/src/utils/memory/memory.h b/src/utils/memory/memory.h new file mode 100644 index 0000000..1c5017f --- /dev/null +++ b/src/utils/memory/memory.h @@ -0,0 +1,6 @@ +#pragma once + +#include + +extern void *a404m_malloc(size_t size); +extern void *a404m_realloc(void *restrict pointer,size_t size); diff --git a/src/utils/time.c b/src/utils/time.c new file mode 100644 index 0000000..729e26f --- /dev/null +++ b/src/utils/time.c @@ -0,0 +1,9 @@ +#include "time.h" +#include +#include + +Clock getTimeInNano(){ + struct timespec t; + clock_gettime(CLOCK_MONOTONIC, &t); + return t.tv_sec*1000000000+t.tv_nsec; +} diff --git a/src/utils/time.h b/src/utils/time.h new file mode 100644 index 0000000..691b26b --- /dev/null +++ b/src/utils/time.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +typedef uint64_t Clock; + +extern Clock getTimeInNano(); diff --git a/src/utils/types.h b/src/utils/types.h new file mode 100644 index 0000000..df4d8b3 --- /dev/null +++ b/src/utils/types.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +#ifndef __cplusplus + #if (__STDC_VERSION__ < 202000L) + #include +typedef enum bool : uint8_t { false = 0, true = 1 } bool; + #endif +#endif + +typedef struct SizedString { + char *str; + size_t size; +} SizedString; + +#define ERROR_SIZE INT64_MAX -- cgit v1.2.3