// Copyright (c) 2021 Dominic Masters
// 
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT

#pragma once
#include "../libs.h"

/**
 * Entry within a given linked list.
 * @param data* The pointer to the data that is within the entry.
 * @param prev* Pointer to the previous entry in the list.
 * @param next* Pointer to the next entry in the list.
 */
typedef struct listentry_t {
  void *data;
  struct listentry_t *prev;
  struct listentry_t *next;
} listentry_t;

/**
 * Linked List of elements, Doubly Linked.
 * @param size The count of elements currently within the list
 * @param start* First element within the list.
 * @param end* Last element within the list.
 */
typedef struct {
  uint32_t size;
  listentry_t *start;
  listentry_t *end;
} list_t;