commit 8240eff87bb928e12a093cc37aae78576cdf4f6c
parent 44b67786e23d4254b918f4ebaae5459f463979e6
Author: Louis Burda <quent.burda@gmail.com>
Date: Sat, 20 May 2023 12:45:23 +0200
Make struct non-opaque and fix build.jst
Diffstat:
3 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/build.jst b/build.jst
@@ -24,14 +24,20 @@ target build
target lib/liballoc/build/liballoc.a
just lib/liballoc
+target lib/libdvec/build/libdvec.a
+ just lib/libdvec
+
target build/libstrvec.a
- liba src/strvec.c lib/liballoc/build/liballoc.a | build
+ liba src/strvec.c
+ lib/liballoc/build/liballoc.a | build
target build/libstrvec.so
libso src/strvec.c | build
target build/test
- cc src/test.c build/libstrvec.a $liballoc | build
+ cc src/test.c build/libstrvec.a
+ lib/liballoc/build/liballoc.a
+ lib/libdvec/build/libdvec.a | build
command clean
rm -rf build
diff --git a/include/strvec.h b/include/strvec.h
@@ -1,5 +1,6 @@
#pragma once
+#include "dvec.h"
#include "allocator.h"
#include <stdbool.h>
@@ -21,7 +22,9 @@
#define LIBSTRVEC_ABORT_ON_ALLOC(cond)
#endif
-struct strvec;
+struct strvec {
+ struct dvec vec;
+};
int strvec_init(struct strvec *strvec, size_t cap, struct allocator *allocator);
int strvec_deinit(struct strvec *strvec);
@@ -38,16 +41,15 @@ void strvec_clear(struct strvec *strvec);
int strvec_reserve(struct strvec *strvec, size_t cap);
int strvec_shrink(struct strvec *strvec);
-const char **strvec_stra(struct strvec *strvec);
+static inline const char **strvec_stra(struct strvec *strvec);
-const char **strvec_at(struct strvec *strvec, size_t index);
+static inline const char **strvec_at(struct strvec *strvec, size_t index);
static inline const char *strvec_get(struct strvec *strvec, size_t index);
static inline const char *strvec_front(struct strvec *strvec);
static inline const char *strvec_back(struct strvec *strvec);
-size_t strvec_len(struct strvec *strvec);
+static inline size_t strvec_len(struct strvec *strvec);
static inline bool strvec_empty(struct strvec *strvec);
-
int strvec_pushn(struct strvec *strvec, const char **str, size_t n);
static inline int strvec_push(struct strvec *strvec, const char *str);
const char **strvec_popn(struct strvec *strvec, size_t n);
@@ -58,6 +60,30 @@ void strvec_remove(struct strvec *strvec, size_t index, size_t n);
const char **strvec_iter_fwd(const struct strvec *strvec, const char **p);
const char **strvec_iter_bwd(const struct strvec *strvec, const char **p);
+static inline const char **
+strvec_stra(struct strvec *strvec)
+{
+ LIBSTRVEC_ABORT_ON_ARGS(!strvec && !strvec->vec.data);
+
+ return strvec->vec.data;
+}
+
+static inline const char **
+strvec_at(struct strvec *strvec, size_t index)
+{
+ LIBSTRVEC_ABORT_ON_ARGS(!strvec);
+
+ return dvec_at(&strvec->vec, index);
+}
+
+static inline size_t
+strvec_len(struct strvec *strvec)
+{
+ LIBSTRVEC_ABORT_ON_ARGS(!strvec);
+
+ return strvec->vec.len;
+}
+
static inline bool
strvec_empty(struct strvec *strvec)
{
@@ -95,5 +121,3 @@ strvec_pop(struct strvec *strvec)
{
return *strvec_popn(strvec, 1);
}
-
-extern const size_t strvec_dsize;
diff --git a/src/strvec.c b/src/strvec.c
@@ -4,12 +4,6 @@
#include <string.h>
-struct strvec {
- struct dvec vec;
-};
-
-const size_t strvec_dsize = sizeof(struct strvec);
-
int
strvec_init(struct strvec *strvec, size_t cap, struct allocator *allocator)
{
@@ -158,30 +152,6 @@ strvec_shrink(struct strvec *strvec)
return rc;
}
-const char **
-strvec_stra(struct strvec *strvec)
-{
- LIBSTRVEC_ABORT_ON_ARGS(!strvec && !strvec->vec.data);
-
- return strvec->vec.data;
-}
-
-const char **
-strvec_at(struct strvec *strvec, size_t index)
-{
- LIBSTRVEC_ABORT_ON_ARGS(!strvec);
-
- return dvec_at(&strvec->vec, index);
-}
-
-size_t
-strvec_len(struct strvec *strvec)
-{
- LIBSTRVEC_ABORT_ON_ARGS(!strvec);
-
- return strvec->vec.len;
-}
-
int
strvec_pushn(struct strvec *strvec, const char **str, size_t count)
{