Permite um sufixo diferente para variáveis e comandos diferentes.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sun, 3 May 2015 22:12:20 +0000 (22:12 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Mon, 11 May 2015 01:08:27 +0000 (01:08 +0000)
Define macros SET_INT_ e SET_STRING_, que permitem um sufixo e comando
dfierente do nome do atributo utilizado.

util.h

diff --git a/util.h b/util.h
index cf5effb..72b66a0 100644 (file)
--- a/util.h
+++ b/util.h
@@ -23,8 +23,8 @@ int set_llong(char *str, long long *val);
 int set_int(char **args, int argc, int *val);
 int set_string(char **args, int argc, char **str);
 
-#define SET_INT(attr) \
-static int run_##attr(struct declaracao *dec, char **args, int argc) \
+#define SET_INT_(suffix, command, attr) \
+static int run_##suffix(struct declaracao *dec, char **args, int argc) \
 { \
        int val; \
        int r = set_int(args, argc, &val); \
@@ -33,13 +33,15 @@ static int run_##attr(struct declaracao *dec, char **args, int argc) \
        dec->attr = val; \
        return 0; \
 } \
-static struct cmd cmd_##attr = { \
-       .name = #attr, \
-       .run = run_##attr, \
+static struct cmd cmd_##suffix = { \
+       .name = #command, \
+       .run = run_##suffix, \
 };
 
-#define SET_STRING(attr) \
-static int run_##attr(struct declaracao *dec, char **args, int argc) \
+#define SET_INT(attr) SET_INT_(attr, attr, attr)
+
+#define SET_STRING_(suffix, command, attr) \
+static int run_##suffix(struct declaracao *dec, char **args, int argc) \
 { \
        char *val; \
        int r = set_string(args, argc, &val); \
@@ -48,9 +50,11 @@ static int run_##attr(struct declaracao *dec, char **args, int argc) \
        dec->attr = val; \
        return 0; \
 } \
-static struct cmd cmd_##attr = { \
-       .name = #attr, \
-       .run = run_##attr, \
+static struct cmd cmd_##suffix = { \
+       .name = #command, \
+       .run = run_##suffix, \
 }
 
+#define SET_STRING(attr) SET_STRING_(attr, attr, attr)
+
 #endif