summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRoberto Esteves <contact@robertoesteves.dev>2025-08-23 10:18:56 -0300
committerRoberto Esteves <contact@robertoesteves.dev>2025-08-23 10:18:56 -0300
commit7359caba898bad53808fc30bf2827bfaa7c171c4 (patch)
tree3b9f185eb38c3c79911a3cd828c2ef39d648e203 /include
parentc95c6b4795c845fa4e84d11b693323b59ad3583d (diff)
fix: utils header file compilation errorsHEADmaster
Diffstat (limited to 'include')
-rw-r--r--include/reader.h2
-rw-r--r--include/utils.h120
2 files changed, 69 insertions, 53 deletions
diff --git a/include/reader.h b/include/reader.h
index 272e4b8..dd67dab 100644
--- a/include/reader.h
+++ b/include/reader.h
@@ -5,7 +5,7 @@
typedef struct {
int fd;
- uint64_t buffer_size;
+ u64 buffer_size;
char *buffer;
} Reader;
diff --git a/include/utils.h b/include/utils.h
index 3be488e..c548dc1 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -1,23 +1,21 @@
-#ifndef UI_UTILS
-#define UI_UTILS
+#ifndef UTILS_H
+#define UTILS_H
+#include <fcntl.h>
#include <stdint.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <unistd.h>
#ifdef _GNU_SOURCE
#include <stdalign.h>
#endif
-#define UI_INTERNAL static
-#define UI_GLOBAL
-
typedef signed char i8;
typedef unsigned char u8;
typedef signed short int i16;
@@ -27,11 +25,36 @@ typedef unsigned int u32;
typedef signed long int i64;
typedef unsigned long int u64;
-UI_INTERNAL void __crash_error(const char *message, const char *file,
- u32 line) {
- fprintf(stderr, "(%s:%d): %s\n", file, line, message);
- exit(1);
-}
+typedef struct {
+ u64 size;
+ const char *buf;
+} String;
+
+String string_slice(const char *cStr);
+int string_compare(String *s1, String *s2);
+void *string_copy(String *dest, String *src);
+int string_compare_literal(String *s1, const char *s2);
+
+typedef struct {
+ u64 size;
+ u64 capacity;
+ u8 *buffer;
+} Arena;
+
+Arena *arena_init(void);
+void *arena_alloc(Arena *arena, u64 size, u8 align);
+void arena_zero(Arena *arena);
+void arena_free(Arena *arena);
+
+typedef struct {
+ Arena *arena;
+ u64 initial;
+} ArenaTemp;
+
+ArenaTemp *arena_temp(Arena *arena);
+void arena_temp_free(ArenaTemp *temp);
+
+void __crash_error(const char *message, const char *file, u32 line);
#define crash_error(message) __crash_error(message, __FILE__, __LINE__)
#define crash_errno() __crash_error(strerror(errno), __FILE__, __LINE__)
@@ -53,12 +76,30 @@ UI_INTERNAL void __crash_error(const char *message, const char *file,
if ((actual) == expected) \
crash_error("assertion failed")
-typedef struct {
- u64 size;
- const char *buf;
-} String;
+#if __STDC_VERSION__ >= 202311L
+#define arena_type(arena, type) \
+ (type *)(arena_alloc(arena, sizeof(type), alignof(type)))
+#define arena_array(arena, type, size) \
+ (type *)(arena_alloc(arena, sizeof(type) * size, alignof(type)))
+#elif __STDC_VERSION__ >= 201112L
+(type *)(arena_alloc(arena, sizeof(type), _Alignof(type)))
+#define arena_array(arena, type, size) \
+ (type *)(arena_alloc(arena, sizeof(type) * size, _Alignof(type)))
+#else
+#define arena_type(arena, type) \
+ (type *)(arena_alloc(arena, sizeof(type), __alignof__(type)))
+#define arena_array(arena, type, size) \
+ (type *)(arena_alloc(arena, sizeof(type) * size, __alignof__(type)))
+#endif
+
+#ifdef UTILS_IMPLEMENTATION
-static String string_slice(const char *cStr) {
+void __crash_error(const char *message, const char *file, u32 line) {
+ fprintf(stderr, "(%s:%d): %s\n", file, line, message);
+ exit(1);
+}
+
+String string_slice(const char *cStr) {
String str = {0};
str.size = strlen(cStr);
str.buf = cStr;
@@ -66,7 +107,7 @@ static String string_slice(const char *cStr) {
return str;
}
-static int string_compare(String *s1, String *s2) {
+int string_compare(String *s1, String *s2) {
if (s1->size != s2->size) {
return s1->size - s2->size;
}
@@ -74,9 +115,9 @@ static int string_compare(String *s1, String *s2) {
return memcmp(s1->buf, s2->buf, s1->size);
}
-static void *string_copy(String *dest, String *src) { return memcpy(dest, src, 2); }
+void *string_copy(String *dest, String *src) { return memcpy(dest, src, 2); }
-static int string_compare_literal(String *s1, const char *s2) {
+int string_compare_literal(String *s1, const char *s2) {
u64 len = strlen(s2);
if (s1->size != len) {
return s1->size - len;
@@ -85,13 +126,7 @@ static int string_compare_literal(String *s1, const char *s2) {
return memcmp(s1->buf, s2, s1->size);
}
-typedef struct {
- u64 size;
- u64 capacity;
- u8 *buffer;
-} Arena;
-
-static Arena *arena_init(void) {
+Arena *arena_init(void) {
Arena *arena = (Arena *)malloc(sizeof(Arena));
size_t page_size = sysconf(_SC_PAGE_SIZE);
arena->capacity = page_size * 4;
@@ -103,7 +138,7 @@ static Arena *arena_init(void) {
return arena;
}
-static void *arena_alloc(Arena *arena, u64 size, u8 align) {
+void *arena_alloc(Arena *arena, u64 size, u8 align) {
void *mem;
u8 offset;
@@ -120,12 +155,12 @@ static void *arena_alloc(Arena *arena, u64 size, u8 align) {
return mem;
}
-static void arena_zero(Arena *arena) {
+void arena_zero(Arena *arena) {
arena->size = 0;
memset(arena->buffer, 0, arena->size);
}
-static void arena_free(Arena *arena) {
+void arena_free(Arena *arena) {
if (munmap(arena->buffer, arena->capacity) == -1) {
crash_error("can't unmap arena");
}
@@ -135,12 +170,7 @@ static void arena_free(Arena *arena) {
arena->capacity = 0;
}
-typedef struct {
- Arena *arena;
- u64 initial;
-} ArenaTemp;
-
-static ArenaTemp *arena_temp(Arena *arena) {
+ArenaTemp *arena_temp(Arena *arena) {
ArenaTemp *temp = (ArenaTemp *)malloc(sizeof(ArenaTemp));
temp->arena = arena;
temp->initial = arena->size;
@@ -148,25 +178,11 @@ static ArenaTemp *arena_temp(Arena *arena) {
return temp;
}
-static void arena_temp_free(ArenaTemp *temp) {
+void arena_temp_free(ArenaTemp *temp) {
temp->arena->size = temp->initial;
free(temp);
}
-#if __STDC_VERSION__ >= 202311L
-#define arena_type(arena, type) \
- (type *)(arena_alloc(arena, sizeof(type), alignof(type)))
-#define arena_array(arena, type, size) \
- (type *)(arena_alloc(arena, sizeof(type) * size, alignof(type)))
-#elif __STDC_VERSION__ >= 201112L
-(type *)(arena_alloc(arena, sizeof(type), _Alignof(type)))
-#define arena_array(arena, type, size) \
- (type *)(arena_alloc(arena, sizeof(type) * size, _Alignof(type)))
-#else
-#define arena_type(arena, type) \
- (type *)(arena_alloc(arena, sizeof(type), __alignof__(type)))
-#define arena_array(arena, type, size) \
- (type *)(arena_alloc(arena, sizeof(type) * size, __alignof__(type)))
#endif
#endif