aboutsummaryrefslogtreecommitdiffstats
path: root/src/stack.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-03-16 16:21:20 -0400
committerDavid Robillard <d@drobilla.net>2021-03-07 15:32:23 -0500
commita29581d3ba664175c459e20e6c86be09707fde6e (patch)
treed11253ca88b09d7a768740b00332a4d780e3852d /src/stack.h
parent6e856d3e7a9c3162b9af350d5cec8a3f6bb94ee2 (diff)
downloadserd-a29581d3ba664175c459e20e6c86be09707fde6e.tar.gz
serd-a29581d3ba664175c459e20e6c86be09707fde6e.tar.bz2
serd-a29581d3ba664175c459e20e6c86be09707fde6e.zip
Use char* for strings in public API
The constant casting just makes user code a mess, for no benefit.
Diffstat (limited to 'src/stack.h')
-rw-r--r--src/stack.h21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/stack.h b/src/stack.h
index fef33390..bcf1434b 100644
--- a/src/stack.h
+++ b/src/stack.h
@@ -28,9 +28,9 @@
/** A dynamic stack in memory. */
typedef struct {
- uint8_t* buf; ///< Stack memory
- size_t buf_size; ///< Allocated size of buf (>= size)
- size_t size; ///< Conceptual size of stack in buf
+ char* buf; ///< Stack memory
+ size_t buf_size; ///< Allocated size of buf (>= size)
+ size_t size; ///< Conceptual size of stack in buf
} SerdStack;
/** An offset to start the stack at. Note 0 is reserved for NULL. */
@@ -40,7 +40,7 @@ static inline SerdStack
serd_stack_new(size_t size)
{
SerdStack stack;
- stack.buf = (uint8_t*)calloc(size, 1);
+ stack.buf = (char*)calloc(size, 1);
stack.buf_size = size;
stack.size = SERD_STACK_BOTTOM;
return stack;
@@ -67,12 +67,10 @@ serd_stack_push(SerdStack* stack, size_t n_bytes)
const size_t new_size = stack->size + n_bytes;
if (stack->buf_size < new_size) {
stack->buf_size += (stack->buf_size >> 1); // *= 1.5
- stack->buf = (uint8_t*)realloc(stack->buf, stack->buf_size);
+ stack->buf = (char*)realloc(stack->buf, stack->buf_size);
}
-
- uint8_t* const ret = (stack->buf + stack->size);
-
- stack->size = new_size;
+ char* const ret = (stack->buf + stack->size);
+ stack->size = new_size;
return ret;
}
@@ -96,8 +94,7 @@ serd_stack_push_aligned(SerdStack* stack, size_t n_bytes, size_t align)
}
// Set top of stack to pad count so we can properly pop later
- assert(pad < UINT8_MAX);
- stack->buf[stack->size - 1] = (uint8_t)pad;
+ stack->buf[stack->size - 1] = (char)pad;
// Push requested space at aligned location
return serd_stack_push(stack, n_bytes);
@@ -110,7 +107,7 @@ serd_stack_pop_aligned(SerdStack* stack, size_t n_bytes)
serd_stack_pop(stack, n_bytes);
// Get amount of padding from top of stack
- const uint8_t pad = stack->buf[stack->size - 1];
+ const uint8_t pad = (uint8_t)stack->buf[stack->size - 1];
// Pop padding and pad count
serd_stack_pop(stack, pad + 1u);