summaryrefslogtreecommitdiff
path: root/src/dged/vec.h
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2024-09-17 08:47:03 +0200
committerAlbert Cervin <albert@acervin.com>2025-11-01 22:11:14 +0100
commit4459b8b3aa9d73895391785a99dcc87134e80601 (patch)
treea5204f447a0b2b05f63504c7fe958ef9bbf1918a /src/dged/vec.h
parent4689f3f38277bb64981fc960e8e384e2d065d659 (diff)
downloaddged-4459b8b3aa9d73895391785a99dcc87134e80601.tar.gz
dged-4459b8b3aa9d73895391785a99dcc87134e80601.tar.xz
dged-4459b8b3aa9d73895391785a99dcc87134e80601.zip
More lsp support
This makes the LSP support complete for now: - Completion - Diagnostics - Goto implementation/declaration - Rename - Documentation - Find references
Diffstat (limited to 'src/dged/vec.h')
-rw-r--r--src/dged/vec.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dged/vec.h b/src/dged/vec.h
index 1289a08..59d6bce 100644
--- a/src/dged/vec.h
+++ b/src/dged/vec.h
@@ -1,6 +1,7 @@
#ifndef _VEC_H
#define _VEC_H
+#include <stdint.h>
#include <stdlib.h>
#define VEC(entry) \
@@ -12,7 +13,7 @@
}
#define VEC_INIT(vec, initial_capacity) \
- (vec)->entries = malloc(sizeof((vec)->entries[0]) * initial_capacity); \
+ (vec)->entries = calloc(initial_capacity, sizeof((vec)->entries[0])); \
(vec)->temp = calloc(1, sizeof((vec)->entries[0])); \
(vec)->capacity = initial_capacity; \
(vec)->nentries = 0;
@@ -23,6 +24,7 @@
free((vec)->temp); \
free((vec)->entries); \
(vec)->entries = NULL; \
+ (vec)->temp = NULL; \
(vec)->capacity = 0; \
(vec)->nentries = 0;
@@ -69,6 +71,13 @@
keep && idx != size; keep = !keep, idx++) \
for (var = (vec)->entries + idx; keep; keep = !keep)
+#define VEC_FOR_EACH_REVERSE(vec, var) VEC_FOR_EACH_INDEXED_REVERSE(vec, var, i)
+
+#define VEC_FOR_EACH_INDEXED_REVERSE(vec, var, idx) \
+ for (uint32_t keep = 1, idx = 0, size = (vec)->nentries; \
+ keep && idx != size; keep = !keep, idx++) \
+ for (var = &(vec)->entries[size - idx - 1]; keep; keep = !keep)
+
#define VEC_SIZE(vec) (vec)->nentries
#define VEC_CAPACITY(vec) (vec)->capacity
#define VEC_ENTRIES(vec) (vec)->entries