aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--array.c18
-rw-r--r--array.h7
2 files changed, 4 insertions, 21 deletions
diff --git a/array.c b/array.c
index 88ff5a0..86a5327 100644
--- a/array.c
+++ b/array.c
@@ -27,22 +27,6 @@ array_info* array_new_(size_t item_size, size_t size) {
return info;
}
-void* array_add_(void* array, size_t item_size) {
- array_info* info = NULL;
- if (!array) {
- info = array_new_(item_size, 0);
- }
- else {
- info = ((array_info*)array) - 1;
- }
- if (info->size == info->capacity) {
- info->capacity <<= 1;
- info = realloc(info, sizeof(array_info) + (info->capacity * item_size));
- }
- info->size++;
- return info->array;
-}
-
void* array_resize_(void* array, size_t item_size, size_t size) {
array_info* info = NULL;
if (!array) {
@@ -51,7 +35,7 @@ void* array_resize_(void* array, size_t item_size, size_t size) {
else {
info = ((array_info*)array) - 1;
}
- if (size == -1) {
+ if (size == -1) {
info->size++;
}
else {
diff --git a/array.h b/array.h
index c035fa6..6ea74d7 100644
--- a/array.h
+++ b/array.h
@@ -12,7 +12,6 @@ typedef struct {
array_info* array_new_(size_t item_size, size_t size);
void array_print(void* array);
void array_pop(void* array);
-void* array_add_(void* array, size_t item_size);
void* array_resize_(void* array, size_t item_size, size_t size);
#define CONCAT_INNER(a, b) a ## b
@@ -66,10 +65,10 @@ void* array_resize_(void* array, size_t item_size, size_t size);
(array) = __temp; \
} while (0)
-#define array_add(array, value) do { \
+#define array_add(array, value) do { \
void* __temp = array_resize_((array), sizeof(*(array)), -1); \
- (array) = __temp; \
- (array)[array_size((array)) - 1] = value; \
+ (array) = __temp; \
+ (array)[array_size((array)) - 1] = value; \
} while (0)
#define array_last(array) (array)[array_size(array) - 1]