/* vi: set ts=2: +-------------------+ Christian Schlittchen | | Enno Rehling | Eressea PBEM host | Katja Zedel | (c) 1998 - 2001 | Henning Peters | | Ingo Wilken +-------------------+ Stefan Reich This program may not be used, modified or distributed without prior permission by the authors of Eressea. */ struct locale; typedef struct message_type { const char * name; int nparameters; const char ** pnames; const char ** types; } message_type; typedef struct message { const struct message_type * type; const void ** parameters; } message; extern struct message_type * mt_new(const char * name, const char * args[]); extern struct message_type * mt_new_va(const char * name, ...); /* mt_new("simple_sentence", "subject:string", "predicate:string", * "object:string", "lang:locale", NULL); */ extern struct message * msg_create(const struct message_type * type, void * args[]); extern struct message * msg_create_va(const struct message_type * type, ...); /* msg_create(&mt_simplesentence, "enno", "eats", "chocolate", &locale_de); * parameters must be in the same order as they were for mt_new! */ extern void msg_free(struct message *m); /* remove message and associated data from memory */ /** message_type registry (optional): **/ extern const struct message_type * mt_register(const struct message_type *); extern const struct message_type * mt_find(const char *);