|
@@ -18,12 +18,16 @@ void** KT_new_array(size_t element_count){
|
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
size_t KT_get_size(void*** array){
|
|
size_t KT_get_size(void*** array){
|
|
|
- return (size_t)(*array)[-1];
|
|
|
|
|
|
|
+ return *(size_t*)(*array)[-1];
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+size_t* get_size_pointer(void*** array){
|
|
|
|
|
+ return (size_t*)(*array)[-1];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void check_size(void*** array){
|
|
void check_size(void*** array){
|
|
|
size_t* current_allocated_elements = (size_t*)((*array)[-2]);
|
|
size_t* current_allocated_elements = (size_t*)((*array)[-2]);
|
|
|
- size_t* current_existing_elements = KT_get_size(array);
|
|
|
|
|
|
|
+ size_t* current_existing_elements = get_size_pointer(array);
|
|
|
|
|
|
|
|
if (*current_existing_elements >= *current_allocated_elements){
|
|
if (*current_existing_elements >= *current_allocated_elements){
|
|
|
*current_allocated_elements += *current_allocated_elements ? *current_allocated_elements : 1;
|
|
*current_allocated_elements += *current_allocated_elements ? *current_allocated_elements : 1;
|
|
@@ -38,7 +42,7 @@ void check_size(void*** array){
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void KT_append(void*** array, void* pointer){
|
|
void KT_append(void*** array, void* pointer){
|
|
|
- size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
|
+ size_t* existing_elements = get_size_pointer(array);
|
|
|
|
|
|
|
|
(*existing_elements)++;
|
|
(*existing_elements)++;
|
|
|
|
|
|
|
@@ -48,7 +52,7 @@ void KT_append(void*** array, void* pointer){
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void KT_prepend(void*** array, void* pointer){
|
|
void KT_prepend(void*** array, void* pointer){
|
|
|
- size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
|
+ size_t* existing_elements = get_size_pointer(array);
|
|
|
|
|
|
|
|
(*existing_elements)++;
|
|
(*existing_elements)++;
|
|
|
|
|
|
|
@@ -60,7 +64,7 @@ void KT_prepend(void*** array, void* pointer){
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void KT_insert_left(void*** array, void* pointer, size_t index){
|
|
void KT_insert_left(void*** array, void* pointer, size_t index){
|
|
|
- size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
|
+ size_t* existing_elements = get_size_pointer(array);
|
|
|
|
|
|
|
|
(*existing_elements)++;
|
|
(*existing_elements)++;
|
|
|
|
|
|
|
@@ -73,7 +77,7 @@ void KT_insert_left(void*** array, void* pointer, size_t index){
|
|
|
|
|
|
|
|
|
|
|
|
|
void KT_insert_right(void*** array, void* pointer, size_t index){
|
|
void KT_insert_right(void*** array, void* pointer, size_t index){
|
|
|
- size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
|
+ size_t* existing_elements = get_size_pointer(array);
|
|
|
|
|
|
|
|
(*existing_elements)++;
|
|
(*existing_elements)++;
|
|
|
|
|
|
|
@@ -85,7 +89,7 @@ void KT_insert_right(void*** array, void* pointer, size_t index){
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void KT_drop(void*** array, size_t index){
|
|
void KT_drop(void*** array, size_t index){
|
|
|
- size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
|
|
+ size_t* existing_elements = get_size_pointer(array);
|
|
|
|
|
|
|
|
(*existing_elements)--;
|
|
(*existing_elements)--;
|
|
|
|
|
|
|
@@ -93,8 +97,8 @@ void KT_drop(void*** array, size_t index){
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void KT_swap_pop(void*** array, size_t index){
|
|
void KT_swap_pop(void*** array, size_t index){
|
|
|
- size_t* existing_elements = KT_get_size(array);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ size_t* existing_elements = get_size_pointer(array);
|
|
|
|
|
+
|
|
|
(*existing_elements)--;
|
|
(*existing_elements)--;
|
|
|
|
|
|
|
|
array[index] = array[*existing_elements];
|
|
array[index] = array[*existing_elements];
|