vec: switch to pointer to u8 instead of void pointer for vec_data

No issues with indexing this by byte, right?
This commit is contained in:
2026-02-03 18:55:28 +00:00
parent 0162dcc709
commit 698b2b96b1
3 changed files with 7 additions and 7 deletions

View File

@@ -81,7 +81,7 @@ static_assert(sizeof(vec_t) == 64, "vec_t has to be 64 bytes as part of SBO");
void vec_init(vec_t *, u64); void vec_init(vec_t *, u64);
void vec_free(vec_t *); void vec_free(vec_t *);
void *vec_data(vec_t *); u8 *vec_data(vec_t *);
void vec_ensure_free(vec_t *, u64); void vec_ensure_free(vec_t *, u64);
void vec_append(vec_t *, const void *const, u64); void vec_append(vec_t *, const void *const, u64);
void vec_clone(vec_t *, vec_t *); void vec_clone(vec_t *, vec_t *);
@@ -184,7 +184,7 @@ typedef struct
/// System context /// System context
typedef struct typedef struct
{ {
vec_t conses; vec_t memory;
sym_table_t symtable; sym_table_t symtable;
} sys_t; } sys_t;

View File

@@ -191,7 +191,7 @@ char stream_peek(stream_t *stream)
// Cached already? We are done. // Cached already? We are done.
if (stream->position < stream->pipe.cache.size) if (stream->position < stream->pipe.cache.size)
{ {
const char *const str = vec_data(&stream->pipe.cache); const char *const str = (char *)vec_data(&stream->pipe.cache);
return str[stream->position]; return str[stream->position];
} }
@@ -301,7 +301,7 @@ sv_t stream_substr(stream_t *stream, u64 size)
break; break;
case STREAM_TYPE_PIPE: case STREAM_TYPE_PIPE:
case STREAM_TYPE_FILE: case STREAM_TYPE_FILE:
ptr = vec_data(&stream->pipe.cache); ptr = (char *)vec_data(&stream->pipe.cache);
break; break;
default: default:
FAIL("Unreachable"); FAIL("Unreachable");
@@ -323,7 +323,7 @@ sv_t stream_substr_abs(stream_t *stream, u64 index, u64 size)
case STREAM_TYPE_FILE: case STREAM_TYPE_FILE:
{ {
if (index + size <= stream_size(stream)) if (index + size <= stream_size(stream))
return SV(vec_data(&stream->pipe.cache) + index, size); return SV((char *)vec_data(&stream->pipe.cache) + index, size);
// (index + size > stream_size(stream)) => try reading chunks // (index + size > stream_size(stream)) => try reading chunks
for (bool read_chunk = stream_chunk(stream); for (bool read_chunk = stream_chunk(stream);
read_chunk && index + size >= stream->pipe.cache.size; read_chunk && index + size >= stream->pipe.cache.size;
@@ -332,7 +332,7 @@ sv_t stream_substr_abs(stream_t *stream, u64 index, u64 size)
if (index + size > stream_size(stream)) if (index + size > stream_size(stream))
return SV(NULL, 0); return SV(NULL, 0);
return SV(vec_data(&stream->pipe.cache) + index, size); return SV((char *)vec_data(&stream->pipe.cache) + index, size);
} }
default: default:
assert("Unreachable"); assert("Unreachable");

View File

@@ -46,7 +46,7 @@ void vec_free(vec_t *vec)
memset(vec, 0, sizeof(*vec)); memset(vec, 0, sizeof(*vec));
} }
void *vec_data(vec_t *vec) u8 *vec_data(vec_t *vec)
{ {
return vec->not_inlined ? vec->ptr : vec->inlined; return vec->not_inlined ? vec->ptr : vec->inlined;
} }