// LinkedList.h: interface for the LinkedList class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LINKEDLIST_H__0E1584AF_733A_4887_97F6_AB6D6E605CA6__INCLUDED_)
#define AFX_LINKEDLIST_H__0E1584AF_733A_4887_97F6_AB6D6E605CA6__INCLUDED_


#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "TarmacGlobals.h"

struct LinkedListElement
{
	void* payload;
	struct LinkedListElement* nextElement;
};

class CLinkedList  
{
public:
	void clear();
	int numberOfElements();
	void insert(uint32 position, void* payload);
	LinkedListElement* getPointerToHead();
	void* getHead();
	BOOL empty();
	void* removeTail();
	void* removeHead();
	void addToHead(void* payload);
	void addToTail(void* payload);
	CLinkedList();
	virtual ~CLinkedList();

private:
	LinkedListElement* tail;
	LinkedListElement* head;
};

#endif // !defined(AFX_LINKEDLIST_H__0E1584AF_733A_4887_97F6_AB6D6E605CA6__INCLUDED_)
