Browse Source

added KT_get_size function

Iver 3 weeks ago
parent
commit
3ec1f7afd6
2 changed files with 15 additions and 8 deletions
  1. 3 0
      src/headers/KT_functions.h
  2. 12 8
      src/main/main.c

+ 3 - 0
src/headers/KT_functions.h

@@ -24,4 +24,7 @@ void KT_drop(void*** array, size_t index);
 // remove a void* from the array (unlike KT_drop, it does not move following data over, but instead changes the order of the array)
 void KT_swap_pop(void*** array, size_t index);
 
+// returns the number of elements currently in array
+size_t KT_get_size(void*** array);
+
 #endif

+ 12 - 8
src/main/main.c

@@ -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];