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


#ifndef	__NENGINEVM__
#define __NENGINEVM__


		#include "script_squirrel/squirrel_vm.h"


namespace GS {
	namespace Script {
		class CObject;

/*
	@short	Squirrel based virtual machine.
*/
struct	EngineVM : public SquirrelVM
{
		List <CObject *> cobjects;

		/// Release all native references.
		void		ReleaseAllNativeReferences();

		/// Push a variant onto the Squirrel stack.
virtual	bool		PushVariant(const Variant &);
		/// Invalidate all references to a user object.
virtual	int			InvalidateNativeReference(void *);

virtual	bool		Open();
virtual	void		Close();
};

	} // Script
} // GS


#endif	// __NENGINEVM__
