File: TreeMacros.m4

package info (click to toggle)
libglazedlists-java 1.9.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 3,024 kB
  • ctags: 4,252
  • sloc: java: 22,561; xml: 818; sh: 51; makefile: 5
file content (55 lines) | stat: -rw-r--r-- 1,802 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 M4 Macros

m4_divert(-1)
# forloop(i, from, to, stmt)
m4_define(`forloop', `m4_pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')m4_popdef(`$1')')
m4_define(`_forloop',
       `$4`'m4_ifelse($1, `$3', ,
             `m4_define(`$1', m4_incr($1))_forloop(`$1', `$2', `$3', `$4')')')
m4_divert

m4_define(`VAR_LAST_COLOR_INDEX', `m4_eval(VAR_COLOUR_COUNT-1)')
m4_define(`originalCounti', ``originalCount'indexToBit($1)')
m4_define(`indexToBit', `m4_eval(`2 ** $1')')
m4_define(`counti', ``count'indexToBit($1)')

m4_define(COLORED_START, `m4_ifelse(VAR_COLOUR_COUNT,1,$1,')
m4_define(COLORED_END, `)')

m4_define(WIDE_NODES_START, `m4_ifelse(VAR_WIDE_NODES,false,$1,')
m4_define(WIDE_NODES_END, `)')

# define a function NODE_WIDTH(boolean) to get the node's size for this color
m4_ifelse(VAR_WIDE_NODES,true,`
    m4_define(NODE_WIDTH, size)
',`
    m4_define(NODE_WIDTH, $1 ? 1 : 0)
')

# define a function NODE_SIZE(node, colors) to no node.nodeSize()
m4_ifelse(VAR_WIDE_NODES,true,`
    m4_ifelse(VAR_COLOR_COUNT,1,`
       m4_define(NODE_SIZE,$1.size)
    ',`
       m4_define(NODE_SIZE,$1.nodeSize($2))
    ')
',`
   m4_define(NODE_SIZE, 1)
')

# define a function to refresh counts
m4_ifelse(VAR_WIDE_NODES,false,`
   m4_define(REFRESH_COUNTS,$1.refreshCounts(!zeroQueue.contains($1)); `EXAMPLE_START')
',`
   m4_define(REFRESH_COUNTS,$1.refreshCounts(); `EXAMPLE_START')
')

# multiple values
m4_define(`VAR_LAST_TYPE_INDEX', `m4_eval(VAR_TYPE_COUNT-1)')
m4_define(`Ti', `T'$1)
m4_define(`ti', `t'$1)
m4_define(NODENAME_START, `BciiNode 'TYPELIST_START)
m4_define(NODENAME_END, TYPELIST_END)
m4_define(TYPELIST_START, `<'forloop(`i', 0, VAR_LAST_TYPE_INDEX, ` COMMA_ONE_PLUS(i) Ti(i)')`> M4_COMMENT(')
m4_define(TYPELIST_END, `)')
m4_define(COMMA_ONE_PLUS, `m4_ifelse($1,0,,COMMAPLACEHOLDER)')