2006-04-24 01:14:18 +02:00
|
|
|
#include "../Messages.h"
|
|
|
|
|
|
|
|
#include <map>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
namespace AtlasMessage
|
|
|
|
{
|
|
|
|
|
|
|
|
typedef void (*msgHandler)(IMessage*);
|
|
|
|
typedef std::map<std::string, msgHandler> msgHandlers;
|
|
|
|
extern msgHandlers& GetMsgHandlers();
|
|
|
|
|
|
|
|
#define THINGHANDLER(prefix, expectedtype, t) \
|
|
|
|
void f##t(prefix##t*); \
|
2006-06-22 00:37:31 +02:00
|
|
|
void f##t##_wrapper(IMessage* msg) { \
|
2006-06-03 07:08:32 +02:00
|
|
|
debug_assert(msg->GetType() == IMessage::expectedtype); \
|
|
|
|
f##t (static_cast<prefix##t*>(msg)); \
|
|
|
|
} \
|
2006-04-24 01:14:18 +02:00
|
|
|
void f##t(prefix##t* msg)
|
|
|
|
|
|
|
|
#define MESSAGEHANDLER(t) THINGHANDLER(m, Message, t)
|
|
|
|
#define QUERYHANDLER(t) THINGHANDLER(q, Query, t)
|
|
|
|
|
|
|
|
}
|