#ifndef IEVENT_H
#define IEVENT_H

namespace Salamander
{

/*
** Abstract base class for Salamander events. Create your own events by subclassing IEvent and calling
** the macro 'registerEvent()'.
*/
class IEvent
{
public:
	/*
	** Destructor.
	*/
	virtual ~IEvent();
	
	/*
	** All events must call 'registerEvent()' to be accepted by Salamander. This function
	** is pure virtual, but will be called in the case where a class subscribes to events
	** of type 'IEvent', thereby catching all events.
	*/
	registerInterfaceInheritedUniqueId();
	
public:

protected:
	/*
	** This is an abstract base class and must be subclassed to be used.
	*/
	IEvent();

};



}

#endif // IEVENT_H