DoublyLinkedList.h #1

  • //
  • guest/
  • eskopljak/
  • p4api.net/
  • main/
  • p4bridge - Copy/
  • DoublyLinkedList.h
  • View
  • Commits
  • Open Download .zip Download (1 KB)
#pragma once

//forward references
class DoublyLinkedList;
class ILockable;

class DoublyLinkedListItem
{
	friend class DoublyLinkedList;

private:
	DoublyLinkedListItem(void){};

public:
	DoublyLinkedListItem(DoublyLinkedList *list);
	DoublyLinkedListItem(DoublyLinkedList *list, int id);
	virtual ~DoublyLinkedListItem(void);
	
	// Id
	int  Id;

	DoublyLinkedListItem* Next() { return pNextItem;}
	DoublyLinkedListItem* Prev() { return pPrevItem;}

protected:
	// doubly linked list of objects of a given type
	DoublyLinkedListItem* pNextItem;
	DoublyLinkedListItem* pPrevItem;

	DoublyLinkedList *pList;
};

class DoublyLinkedList
{
private:
	DoublyLinkedList(void){};

public:
	DoublyLinkedList(ILockable* locker);
	virtual ~DoublyLinkedList(void);
	
	void Add(DoublyLinkedListItem* object);
	void Remove(DoublyLinkedListItem* object, int deleteObj = 1);

	void Remove(int Id);

	DoublyLinkedListItem* Find(int Id);
	const DoublyLinkedListItem* First() const { return pFirstItem;}
	const DoublyLinkedListItem* Last() const { return pLastItem;}

	int Count() { return itemCount; }
	//CRITICAL_SECTION CriticalSection; 

protected:
	// Maintain a list of items
	DoublyLinkedListItem* pFirstItem;
	DoublyLinkedListItem* pLastItem;

	int disposed;
	int itemCount;

	ILockable* Locker;
};
# Change User Description Committed
#1 28480 eskopljak submit