Annotation of embedaddon/bird2/conf/gen_keywords.m4, revision 1.1.1.1
1.1 misho 1: m4_divert(-1)m4_dnl
2: #
3: # BIRD -- Generator of Configuration Keyword List
4: #
5: # (c) 1998--2000 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
6: #
7: # Can be freely distributed and used under the terms of the GNU GPL.
8: #
9:
10: # Common aliases
11: m4_define(DNL, `m4_dnl')
12:
13: # Diversions used:
14: # 1 keywords
15:
16: # Simple iterator
17: m4_define(CF_itera, `m4_ifelse($#, 1, [[CF_iter($1)]], [[CF_iter($1)[[]]CF_itera(m4_shift($@))]])')
18: m4_define(CF_iterate, `m4_define([[CF_iter]], m4_defn([[$1]]))CF_itera($2)')
19:
20: # We include all the headers
21: m4_define(CF_HDR, `m4_divert(0)')
22: m4_define(CF_DECLS, `m4_divert(-1)')
23: m4_define(CF_DEFINES, `m4_divert(-1)')
24:
25: # Keywords are translated to C initializers
26: m4_define(CF_handle_kw, `m4_divert(1){ "m4_translit($1,[[A-Z]],[[a-z]])", $1, NULL },
27: m4_divert(-1)')
28: m4_define(CF_keywd, `m4_ifdef([[CF_tok_$1]],,[[m4_define([[CF_tok_$1]],1)CF_handle_kw($1)]])')
29: m4_define(CF_KEYWORDS, `m4_define([[CF_toks]],[[]])CF_iterate([[CF_keywd]], [[$@]])m4_ifelse(CF_toks,,,%token[[]]CF_toks
30: )DNL')
31:
32: # CLI commands generate keywords as well
33: m4_define(CF_CLI, `CF_KEYWORDS(m4_translit($1, [[ ]], [[,]]))
34: ')
35:
36: # Enums are translated to C initializers: use CF_ENUM(typename, prefix, values)
37: m4_define(CF_enum, `m4_divert(1){ "CF_enum_prefix[[]]$1", -((CF_enum_type<<16) | CF_enum_prefix[[]]$1), NULL },
38: m4_divert(-1)')
39: m4_define(CF_ENUM, `m4_define([[CF_enum_type]],$1)m4_define([[CF_enum_prefix]],$2)CF_iterate([[CF_enum]], [[m4_shift(m4_shift($@))]])DNL')
40:
41: # After all configuration templates end, we generate the
42: m4_m4wrap(`
43: m4_divert(0)
44: static struct keyword keyword_list[] = {
45: m4_undivert(1){ NULL, -1, NULL } };
46: ')
47:
48: # As we are processing C source, we must access all M4 primitives via
49: # m4_* and also set different quoting convention: `[[' and ']]'
50: m4_changequote([[,]])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>