aboutsummaryrefslogtreecommitdiff
path: root/lib/bob/u8strgrow.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bob/u8strgrow.c')
-rw-r--r--lib/bob/u8strgrow.c39
1 files changed, 0 insertions, 39 deletions
diff --git a/lib/bob/u8strgrow.c b/lib/bob/u8strgrow.c
deleted file mode 100644
index f1f86d3..0000000
--- a/lib/bob/u8strgrow.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <stdlib.h>
-
-#include "bob.h"
-
-static size_t nextpow2(size_t);
-
-struct u8str *
-u8strgrow(struct u8str *b, size_t n)
-{
- if (n > b->cap) {
- b->cap = nextpow2(n);
- if (!(b->p = realloc(b->p, b->cap)))
- return nullptr;
- }
- return b;
-}
-
-size_t
-nextpow2(size_t x)
-{
-#if defined(__has_builtin) && __has_builtin(__builtin_clzl)
- x = x <= 1 ? 1 : 1 << (64 - __builtin_clzl(x - 1));
-#else
- if (x) {
- x--;
- x |= x >> 1;
- x |= x >> 2;
- x |= x >> 4;
- x |= x >> 8;
- if (sizeof(size_t) >= 4)
- x |= x >> 16;
- if (sizeof(size_t) >= 8)
- x |= x >> 32;
- }
- x++;
-#endif
-
- return x;
-}