/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A.  All Rights Reserved.                         *
*                                                                          *
***************************************************************************/

#pragma once

#include "glmCoreAPI.h"
#include "glmTypes.h"
#include "glmProgressEvent.h"

namespace glm
{
	/**
	* \brief Interface for a listener to event launched by an instance of Progress.
	*
	* Instances of this class are to be "attached" to instances of Progress in order 
	* to display (message boxes, progress bar...) the progress of the monitored process.
	*
	* \ingroup progress
	* \author Golaem <dev@golaem.com>
	*/
	class GLM_CORE_API IProgressListener
	{
	public:

		GLM_ABSTRACTCLASS_STAT_ID( glm::MemoryStatIds::GolaemShared)

		/**
		* \brief destructor
		*/
		virtual ~IProgressListener() {}

		/**
		* \brief Method called when a progress event is emmited.
		* \param evt The event.
		*/
		virtual void onProgressEvent( const ProgressEvent& evt ) = 0 ;
	};
}

