/*
 * SPDX-FileCopyrightText: 2019-2023 Bruce Cowan <bruce@bcowan.me.uk>
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>

#include <array.h>

static void
print_element (void *data,
               void *user_data)
{
    printf ("%" PRIdPTR " ", (intptr_t) data);
}

static void
print_details (Array *arr)
{
    size_t len = array_get_length (arr);
    size_t capacity = array_get_capacity (arr);
    printf ("Array length %zu, Array capacity %zu\n", len, capacity);

    printf ("Data is: ");
    array_foreach (arr, print_element, nullptr);
    printf ("\n");
}

int
main (void)
{
    Array *arr = array_new (nullptr);
    print_details (arr);

    for (int i = 0; i < 10; i++)
    {
        array_add (arr, (const void *) (intptr_t) i);
        print_details (arr);
    }
    
    for (int i = 0; i < 10; i++)
    {
        array_remove_fast (arr, 0);
        print_details (arr);
    }

    return 0;
}