/* callback taking a pointer to a "generic" msg as argument */
typedef void (*Callback_t)(void *msg);
struct action0_t;
struct action1_t;
/* implement callback for each message id */
void ProcessMsgAction0(action0_t *msg) { /* ... */ }
void ProcessMsgAction1(action1_t *msg) { /* ... */ }
/* initialize callback pointer */
Callback_t const Callback[] =
{
(Callback_t)ProcessMsgAction0, /**< 0: MSGID_ACTION_0 */
(Callback_t)(ProcessMsgAction1), /**< 1: MSGID_ACTION_1 */
/* ... */
};
int main() {return 0;}
LyogY2FsbGJhY2sgdGFraW5nIGEgcG9pbnRlciB0byBhICJnZW5lcmljIiBtc2cgYXMgYXJndW1lbnQgKi8KdHlwZWRlZiB2b2lkICgqQ2FsbGJhY2tfdCkodm9pZCAqbXNnKTsKCnN0cnVjdCBhY3Rpb24wX3Q7CnN0cnVjdCBhY3Rpb24xX3Q7CgovKiBpbXBsZW1lbnQgY2FsbGJhY2sgZm9yIGVhY2ggbWVzc2FnZSBpZCAqLwp2b2lkIFByb2Nlc3NNc2dBY3Rpb24wKGFjdGlvbjBfdCAqbXNnKSB7IC8qIC4uLiAqLyB9CnZvaWQgUHJvY2Vzc01zZ0FjdGlvbjEoYWN0aW9uMV90ICptc2cpIHsgLyogLi4uICovIH0KCi8qIGluaXRpYWxpemUgY2FsbGJhY2sgcG9pbnRlciAqLwpDYWxsYmFja190IGNvbnN0IENhbGxiYWNrW10gPQp7CiAgKENhbGxiYWNrX3QpUHJvY2Vzc01zZ0FjdGlvbjAsICAvKio8IDA6IE1TR0lEX0FDVElPTl8wICovCiAgKENhbGxiYWNrX3QpKFByb2Nlc3NNc2dBY3Rpb24xKSwgIC8qKjwgMTogTVNHSURfQUNUSU9OXzEgKi8KICAvKiAuLi4gKi8KfTsKCmludCBtYWluKCkge3JldHVybiAwO30K