/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__NMSVIEW_VMHOOK__
#define	__NMSVIEW_VMHOOK__


		#include "script/script_vm.h"


namespace GS {
	class ViewerBase;

	namespace Script {

//
class	ViewerEventHookTable : public IVM::IDebug
{
		ViewerBase		*viewer;

public:

		/// Handle a runtime debug step.
virtual	void			OnStep(char type, const char *source, int line, const char *funcname);
		/// Handle a VM kill event.
virtual	void			Kill(const char *reason);
		/// Handle a compiler error.
virtual	void			OnCompilerError(const char *error, const char *source, int line);
		/// Handle a runtime error.
virtual	void			OnRuntimeException(const char *error);

		ViewerEventHookTable(ViewerBase *v) : viewer(v) {}
};

	} // Script
} // GS


#endif	// __NMSVIEW_VMHOOK__
