92107c15c8b370dc69265003904efe044a6d4f24
[bertos.git] / app / triface / cmd_ctor.h
1 /**
2  * \file
3  * <!--
4  * Copyright 2006 Develer S.r.l. (http://www.develer.com/)
5  * -->
6  *
7  * \brief Macro for defining command for protocol.
8  *
9  *
10  * \version $Id$
11  *
12  * \author Marco Benelli <marco@develer.com>
13  */
14 #ifndef CMD_CTOR_H
15 #define CMD_CTOR_H
16
17 #include <mware/parser.h>
18
19 #define REGISTER_FUNCTION parser_register_cmd
20
21 #define REGISTER_CMD(NAME) REGISTER_FUNCTION(&cmd_ ## NAME ## _template)
22
23 #define MAKE_TEMPLATE(NAME, ARGS, RES)                                  \
24 const struct CmdTemplate cmd_ ## NAME ## _template =                    \
25 {                                                                       \
26         #NAME, ARGS, RES, cmd_ ## NAME, 0                               \
27 };
28
29 #define MAKE_CMD(NAME, ARGS, RES, BODY)                                 \
30 static ResultCode cmd_ ## NAME (parms *args)                            \
31 {                                                                       \
32         return (ResultCode)BODY;                                        \
33 }                                                                       \
34 MAKE_TEMPLATE(NAME, ARGS, RES)
35
36 #endif // CMD_CTOR_H