#ifndef __CALLBACK_LIST_H
#define __CALLBACK_LIST_H

#include <vector>
#include <FL/Fl_Widget.H>

class Callback_List;

class Callback_List {
private:
	class Callback_Client {
		public:
			Fl_Callback* cb;
			Fl_Widget* w;
			void* data;

			Callback_Client(Fl_Callback* thiscb, Fl_Widget* thisw, void* thisd);
	};
	std::vector<Callback_Client> clients;

public:
	void add(Fl_Callback* cb, Fl_Widget* w, void* data);
	void remove(Fl_Callback* cb, Fl_Widget* w, void* data);
	void call();
};

#endif
