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>