Annotation of embedaddon/bird2/conf/gen_keywords.m4, revision 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>