#ifndef RECEIVERRECORD_H
#define RECEIVERRECORD_H

namespace Salamander
{

class IEvent;

/*
** This is an abstract base class used by the events system. It stores a linked list of
** EventReceiverRecord classes. For a full description, please see 'EventReceiverRecord.h'
*/
class ReceiverRecord
{
public:
	/*
	** Destructor
	*/
	virtual ~ReceiverRecord();

	/*
	** Pass events on to the event receiver, but only if they are of the type
	** that the receiver has registered for.
	*/
	virtual void receiveIf(const IEvent& event) = 0;

	/*
	** The next element in the linked list.
	*/
	ReceiverRecord* nextReceiverRecord_;

protected:
	/*
	** We are an abstract base class.
	*/
	ReceiverRecord();
};

}

#endif // RECEIVERRECORD_H
