// __author__ = Juan Carlos De Abreu (jcabreur@gmail.com)

#ifndef DATA_KEY_H__
#define DATA_KEY_H__

#include "DataCallFunction.h"
#include "../../Base/Singleton.h"
#include "../../Base/Memory/SmartPointer.h"

BEGIN_TEG_NAMESPACE();

class DataKey : public Singleton<DataKey> {
protected:
	// Attributes.
	SmartPointer<DataCallFunction> keyFunction[256];

public:
	// DataKey constructor.
	DataKey();

	// DataKey destructor.
	~DataKey();

	// Methods.
	void release(void);
	void update(void);
	void addKeyFunc(const int& key, SmartPointer<DataCallFunction> func);
};

END_TEG_NAMESPACE();

#endif  // DATA_KEY_H__
