|
|
@@ -17,9 +17,13 @@ void** KT_new_array(size_t element_count){
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
+size_t KT_get_size(void*** array){
|
|
|
+ return (size_t)(*array)[-1];
|
|
|
+}
|
|
|
+
|
|
|
void check_size(void*** array){
|
|
|
size_t* current_allocated_elements = (size_t*)((*array)[-2]);
|
|
|
- size_t* current_existing_elements = (size_t*)((*array)[-1]);
|
|
|
+ size_t* current_existing_elements = KT_get_size(array);
|
|
|
|
|
|
if (*current_existing_elements >= *current_allocated_elements){
|
|
|
*current_allocated_elements += *current_allocated_elements ? *current_allocated_elements : 1;
|
|
|
@@ -34,7 +38,7 @@ void check_size(void*** array){
|
|
|
}
|
|
|
|
|
|
void KT_append(void*** array, void* pointer){
|
|
|
- size_t* existing_elements = (size_t*)(*array)[-1];
|
|
|
+ size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
(*existing_elements)++;
|
|
|
|
|
|
@@ -44,7 +48,7 @@ void KT_append(void*** array, void* pointer){
|
|
|
}
|
|
|
|
|
|
void KT_prepend(void*** array, void* pointer){
|
|
|
- size_t* existing_elements = (size_t*)(*array)[-1];
|
|
|
+ size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
(*existing_elements)++;
|
|
|
|
|
|
@@ -56,7 +60,7 @@ void KT_prepend(void*** array, void* pointer){
|
|
|
}
|
|
|
|
|
|
void KT_insert_left(void*** array, void* pointer, size_t index){
|
|
|
- size_t* existing_elements = (size_t*)(*array)[-1];
|
|
|
+ size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
(*existing_elements)++;
|
|
|
|
|
|
@@ -69,7 +73,7 @@ void KT_insert_left(void*** array, void* pointer, size_t index){
|
|
|
|
|
|
|
|
|
void KT_insert_right(void*** array, void* pointer, size_t index){
|
|
|
- size_t* existing_elements = (size_t*)(*array)[-1];
|
|
|
+ size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
(*existing_elements)++;
|
|
|
|
|
|
@@ -81,7 +85,7 @@ void KT_insert_right(void*** array, void* pointer, size_t index){
|
|
|
}
|
|
|
|
|
|
void KT_drop(void*** array, size_t index){
|
|
|
- size_t* existing_elements = (size_t*)(*array)[-1];
|
|
|
+ size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
(*existing_elements)--;
|
|
|
|
|
|
@@ -89,8 +93,8 @@ void KT_drop(void*** array, size_t index){
|
|
|
}
|
|
|
|
|
|
void KT_swap_pop(void*** array, size_t index){
|
|
|
- size_t* existing_elements = (size_t*)(*array)[-1];
|
|
|
-
|
|
|
+ size_t* existing_elements = KT_get_size(array);
|
|
|
+
|
|
|
(*existing_elements)--;
|
|
|
|
|
|
array[index] = array[*existing_elements];
|