#include "DocEvents.h"

#include "WimpLib:EventSender.h"

static EventSender* pTheDocEvents = NULL;

void throw_DocEvents_DocEvents(void)
{
	pTheDocEvents = throw_New_EventSender();
}

void DocEvents_NotDocEvents(void)
{
	Delete_EventSender(pTheDocEvents);
	pTheDocEvents = NULL;
}

void throw_DocEvents_AddListener(const void* pElement, void* pListener, Listener_FOnEvent fn)
{
	throw_EventSender_AddListener
		( pTheDocEvents, EListenerPriority_Normal
		, NULL, pElement ? (int) pElement : -1, pListener, fn);
}

void DocEvents_RemoveListener(const void* pElement, void* pListener, Listener_FOnEvent fn)
{
	EventSender_RemoveListener
		( pTheDocEvents, EListenerPriority_Normal
		, NULL, pElement ? (int) pElement : -1, pListener, fn);
}

void DocEvents_NotifyListeners(const void* pSender, const DocEvent* pEvent) throws(any)
{
	EventSender_NotifyListeners(pTheDocEvents, pSender, (int) pEvent->pElement, pEvent);
}
