
#ifndef SPECTRE_MESSAGE_QUEUE_H
#define SPECTRE_MESSAGE_QUEUE_H

#include <Spectre/System/Event.h>
#include <queue>

namespace sp {

class PlatformEventQueue;

class MessageQueue
{
public :
	MessageQueue();
	~MessageQueue();

	void postEvent(Event event);

	bool pollEvent(Event& event);

	bool isEmpty() const;

protected :
	std::deque<Event> m_queue;

	PlatformEventQueue* m_impl;
};

} // namespace sp

#endif /* SPECTRE_MESSAGE_QUEUE_H */
