aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--array.c8
-rw-r--r--array.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/array.c b/array.c
index 8328b06..25f471b 100644
--- a/array.c
+++ b/array.c
@@ -135,3 +135,11 @@ bool array_truncate(Array *arr, size_t len) {
}
return false;
}
+
+bool array_resize(Array *arr, size_t len) {
+ if (len <= arr->count) {
+ arr->len = len;
+ return true;
+ }
+ return false;
+}
diff --git a/array.h b/array.h
index b369d68..5664f5a 100644
--- a/array.h
+++ b/array.h
@@ -58,5 +58,8 @@ size_t array_length(Array*);
size_t array_capacity(Array*);
/* remove all elements at index >= length, keep allocated memory */
bool array_truncate(Array*, size_t length);
+/* change length if it is less than the current capacity, newly
+ * accesible elements preserve their previous values */
+bool array_resize(Array*, size_t length);
#endif