#pragma once
#include "queue_node.h"
#ifdef __cplusplus
extern "C" {
#endif

	// non-thread-safe list of queue_node_t objects with _head and _tail
	typedef struct nodelist_s
	{
		queue_node_t *head;
		queue_node_t *tail;
	} nodelist_s, *nodelist_t;

	void nodelist_init(nodelist_t nodelist);
	void nodelist_push_back(nodelist_t nodelist, queue_node_t *item);
	void nodelist_push_front(nodelist_t nodelist, queue_node_t *item);
	queue_node_t *nodelist_pop_front(nodelist_t nodelist);
	// pushes an item onto the list, but treat it as a whole list rather than a single item
	void nodelist_push_back_list(nodelist_t nodelist, queue_node_t *item);

	
	#ifdef __cplusplus
}
#endif