#ifndef IMANAGER_H
#define IMANAGER_H

namespace Salamander
{

class Application;

// Abstract base class
class IManager
{
	friend class Application;
public:
	virtual ~IManager();
	
	/*
	** All managers must call 'registerManager()' to be accepted by Salamander.
	*/
	registerInterfaceUniqueId();

protected:
	// these functions can only be called by application
	IManager();
	
	virtual bool startup() = 0;
	virtual bool shutdown() = 0;

	virtual void frame() = 0;

};

}

#endif // IMANAGER_H