add array_realloc
This commit is contained in:
@@ -42,6 +42,25 @@ array_t array_move(array_t* initial, size_t move)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
array_t *array_realloc(array_t* arr, size_t rows)
|
||||||
|
{
|
||||||
|
if (!arr)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: ptr dereferences to NULL\n", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
array_t *new_arr = realloc(arr, sizeof(array_t) + (arr->size * rows - 1));
|
||||||
|
if (!new_arr)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: Failed to reallocate memory for array", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_arr->rows = rows;
|
||||||
|
return new_arr;
|
||||||
|
}
|
||||||
|
|
||||||
size_t array_get_rows(array_t *arr)
|
size_t array_get_rows(array_t *arr)
|
||||||
{
|
{
|
||||||
if (!arr)
|
if (!arr)
|
||||||
|
|||||||
@@ -54,6 +54,14 @@ array_t *array_init(size_t size, size_t rows);
|
|||||||
*/
|
*/
|
||||||
array_t array_move(array_t* initial, size_t move);
|
array_t array_move(array_t* initial, size_t move);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function reallocates the safe array
|
||||||
|
*
|
||||||
|
* @param arr The pointer to the safe array struct
|
||||||
|
* @param rows The number of rows to reallocate
|
||||||
|
*/
|
||||||
|
array_t *array_realloc(array_t* arr, size_t rows);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function gets the number of rows in the safe array
|
* @brief This function gets the number of rows in the safe array
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -39,6 +39,21 @@ TEST(array, array_move)
|
|||||||
array_free(x);
|
array_free(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(array, array_realloc)
|
||||||
|
{
|
||||||
|
array_t* x = array_init(sizeof(double), 2);
|
||||||
|
ARRAY_GET(x, 0, double) = 1;
|
||||||
|
ARRAY_GET(x, 1, double) = 2;
|
||||||
|
|
||||||
|
array_t* y = array_realloc(x, 3);
|
||||||
|
EXPECT_EQ(array_get_rows(y), 3);
|
||||||
|
EXPECT_EQ(ARRAY_GET(y, 0, double), 1);
|
||||||
|
EXPECT_EQ(ARRAY_GET(y, 1, double), 2);
|
||||||
|
EXPECT_EQ(ARRAY_GET(y, 2, double), 0);
|
||||||
|
|
||||||
|
array_free(y);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(array, Get_Set_array)
|
TEST(array, Get_Set_array)
|
||||||
{
|
{
|
||||||
array_t* x = array_init(sizeof(double), 2);
|
array_t* x = array_init(sizeof(double), 2);
|
||||||
|
|||||||
Reference in New Issue
Block a user