#ifndef MESSAGE_H_
#define MESSAGE_H_

namespace system {
	namespace MSG {
		namespace TYPE {
			const int KEYBOARD = 0;
			const int MOUSE = 1;
			const int TIMER = 2;
		}
	}
	
	/*
	 * メッセージクラス
	 * 
	 * タスクにメッセージを送信したり
	 * 新規メッセージを作ったり
	 */
	class Message {
	public:
		int type;
		int from;
		int arg1;
		int arg2;
		int arg3;
		int arg4;
		#ifndef DEBUG_MESSAGE
		static Message* create(
		#else
		static Message& create(
		#endif
			int type = 0, int arg1 = 0, int arg2 = 0, int arg3 = 0, int arg4 = 0
			);
		static void send(int to, Message& msg);
	};
}

#endif /*MESSAGE_H_*/
