size_t nn; \
\
for (k = kwfirst; k; k = va_arg(*ap, const char *)) { \
- if (!strcmp(k, "kw.valist")) { \
+ set##_KWSET(KWSET__ARGVA) \
+ /*else*/ if (!strcmp(k, "kw.valist")) { \
aap = va_arg(*ap, va_list *); \
kk = va_arg(*aap, const char *); \
set##_kwparse(kw, kk, aap, 0, 0); \
vv = va_arg(*ap, const struct kwval *); \
nn = va_arg(*ap, size_t); \
set##_kwparse(kw, 0, 0, vv, nn); \
- } \
- set##_KWSET(KWSET__ARGVA) \
- else kw_unknown(#set, k); \
+ } else kw_unknown(#set, k); \
} \
\
while (n) { \
- if (!strcmp(v->kw, "kw.valist")) { \
+ set##_KWSET(KWSET__ARGTAB) \
+ /*else*/ if (!strcmp(v->kw, "kw.valist")) { \
aap = *(va_list *const *)v->val; \
kk = va_arg(*aap, const char *); \
set##_kwparse(kw, kk, aap, 0, 0); \
} else if (!strcmp(v->kw, "kw.tab")) { \
t = (const struct kwtab *)v->val; \
set##_kwparse(kw, 0, 0, t->v, t->n); \
- } \
- set##_KWSET(KWSET__ARGTAB) \
- else kw_unknown(#set, v->kw); \
+ } else kw_unknown(#set, v->kw); \
v++; n--; \
} \
}
+
#define KWSET__ARGVA(type, name, dflt) \
- else if (!strcmp(k, #name)) { \
+ if (!strcmp(k, #name)) { \
kw->name##_suppliedp = 1; \
kw->name = va_arg(*ap, type); \
- }
+ } else
#define KWSET__ARGTAB(type, name, dflt) \
- else if (!strcmp(v->kw, #name)) { \
+ if (!strcmp(v->kw, #name)) { \
kw->name##_suppliedp = 1; \
kw->name = *(type const *)v->val; \
- }
+ } else
/*----- Defining keyword-accepting functions ------------------------------*/