From 4cb5b1db4029663469090a58510a52886bd59aeb Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 9 Oct 2019 19:01:53 -0400 Subject: [PATCH] Added vpbuffer utility functions --- include/cyclone/types.h | 10 ++++++++++ runtime.c | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/cyclone/types.h b/include/cyclone/types.h index 75f25b2d..ffeaa9c5 100644 --- a/include/cyclone/types.h +++ b/include/cyclone/types.h @@ -1428,6 +1428,16 @@ typedef union { /**@}*/ /**@}*/ +typedef struct vpbuffer_t vpbuffer; +struct vpbuffer_t { + void **buf; + int len; + int count; +}; + +vpbuffer *vp_create(void); +void vp_add(vpbuffer *v, void *obj); + /* Utility functions */ void **vpbuffer_realloc(void **buf, int *len); void **vpbuffer_add(void **buf, int *len, int i, void *obj); diff --git a/runtime.c b/runtime.c index 9429bf7c..80b0f91d 100644 --- a/runtime.c +++ b/runtime.c @@ -6435,6 +6435,21 @@ void vpbuffer_free(void **buf) free(buf); } +vpbuffer *vp_create(void) +{ + vpbuffer *v = malloc(sizeof(vpbuffer)); + v->len = 128; + v->count = 0; + v->buf = NULL; + v->buf = vpbuffer_realloc(v->buf, &(v->len)); + return v; +} + +void vp_add(vpbuffer *v, void *obj) +{ + v->buf = vpbuffer_add(v->buf, &(v->len), v->count++, obj); +} + object Cyc_bit_unset(void *data, object n1, object n2) { Cyc_check_int(data, n1);