* tmac/s.tmac (MO, CH, pg*OH, pg*EH, pg*OF, pg*EF, *, [., .],
[s-roff.git] / tmac / trace.tmac
blobb4ec424a5f2ff4d730e891a3a2519f1c7faaf2b3
1 .\" trace.tmac
2 .\"
3 .\" Load this before a macro package that you want to trace.
5 .do if d !!!sp .nx
7 .nr _C \n(.C
8 .cp 0
10 .do ds !!!sp " \"
12 .eo
14 .rn nr !!nr
16 .de nr
17 .  do !!ds !!!inc \$2
18 .  do !!substring !!!inc 0 0
19 .  do !!nr \$*
20 .  do tm1 "\*[!!!sp]*** .nr \$* (-> \n[\$1])
23 .rn ds !!ds
24 .rn ds1 !!ds1
25 .rn as !!as
26 .rn as1 !!as1
28 .de ds
29 .  do tm1 "\*[!!!sp]*** .ds \$^
30 .  do !!ds \$^\"
33 .de ds1
34 .  do tm1 "\*[!!!sp]*** .ds1 \$^
35 .  do !!ds1 \$^\"
38 .de as
39 .  do tm1 "\*[!!!sp]*** .as \$^
40 .  do !!as \$^\"
43 .de as1
44 .  do tm1 "\*[!!!sp]*** .as1 \$^
45 .  do !!as1 \$^\"
48 .rn de !!de
49 .rn de1 !!de1
51 .!!de de
52 .  do ecs
53 .  ec
54 .  do !!de \$1
55 .    do ie \\n[.br] .!!ds !!!br .\"
56 .    el .do !!ds !!!br '\"
57 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** de trace enter: \\*[!!!br]\\$0 \\$@
58 .    el .do tm1 "\\*[!!!sp]*** de trace enter \$1: \\*[!!!br]\\$0 \\$@
59 .    do !!as !!!sp " \"
60 .    do ie \\n[.br] .do !!\\$0 \\$@
61 .    el 'do !!\\$0 \\$@
62 .    do !!substring !!!sp 1
63 .    do ie \\n[.br] .!!ds !!!br .\"
64 .    el .do !!ds !!!br '\"
65 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** trace exit: \\*[!!!br]\\$0 \\$@
66 .    el .do tm1 "\\*[!!!sp]*** trace exit \$1: \\*[!!!br]\\$0 \\$@
67 \..
69 .  do !!ds !!d1 !!\$1
70 .  do !!ds !!d2 \$2
72 .  do ecr
73 .  do dei !!d1 !!d2
76 .!!de de1
77 .  do ecs
78 .  ec
79 .  do !!de \$1
80 .    do ie \\n[.br] .!!ds !!!br .\"
81 .    el .do !!ds !!!br '\"
82 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** de1 trace enter: \\*[!!!br]\\$0 \\$@
83 .    el .do tm1 "\\*[!!!sp]*** de1 trace enter \$1: \\*[!!!br]\\$0 \\$@
84 .    do !!as !!!sp " \"
85 .    do ie \\n[.br] .do !!\\$0 \\$@
86 .    el 'do !!\\$0 \\$@
87 .    do !!substring !!!sp 1
88 .    do ie \\n[.br] .!!ds !!!br .\"
89 .    el .do !!ds !!!br '\"
90 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** trace exit: \\*[!!!br]\\$0 \\$@
91 .    el .do tm1 "\\*[!!!sp]*** trace exit \$1: \\*[!!!br]\\$0 \\$@
92 \..
94 .  do !!ds !!d1 !!\$1
95 .  do !!ds !!d2 \$2
97 .  do ecr
98 .  do dei1 !!d1 !!d2
101 .rn am !!am
102 .rn am1 !!am1
104 .!!de am
105 .  do ecs
106 .  ec
107 .  do !!de \$1
108 .    do ie \\n[.br] .!!ds !!!br .\"
109 .    el .do !!ds !!!br '\"
110 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** am trace enter: \\*[!!!br]\\$0 \\$@
111 .    el .do tm1 "\\*[!!!sp]*** am trace enter \$1: \\*[!!!br]\\$0 \\$@
112 .    do !!as !!!sp " \"
113 .    do ie \\n[.br] .do !!\\$0 \\$@
114 .    el 'do !!\\$0 \\$@
115 .    do !!substring !!!sp 1
116 .    do ie \\n[.br] .!!ds !!!br .\"
117 .    el .do !!ds !!!br '\"
118 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** trace exit: \\*[!!!br]\\$0 \\$@
119 .    el .do tm1 "\\*[!!!sp]*** trace exit \$1: \\*[!!!br]\\$0 \\$@
122 .  do !!ds !!a1 !!\$1
123 .  do !!ds !!a2 \$2
125 .  do ecr
126 .  do ami !!a1 !!a2
129 .!!de am1
130 .  do ecs
131 .  ec
132 .  do !!de \$1
133 .    do ie \\n[.br] .!!ds !!!br .\"
134 .    el .do !!ds !!!br '\"
135 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** am1 trace enter: \\*[!!!br]\\$0 \\$@
136 .    el .do tm1 "\\*[!!!sp]*** am1 trace enter \$1: \\*[!!!br]\\$0 \\$@
137 .    do !!as !!!sp " \"
138 .    do ie \\n[.br] .do !!\\$0 \\$@
139 .    el 'do !!\\$0 \\$@
140 .    do !!substring !!!sp 1
141 .    do ie \\n[.br] .!!ds !!!br .\"
142 .    el .do !!ds !!!br '\"
143 .    ie "\$1"\\$0" .do tm1 "\\*[!!!sp]*** trace exit: \\*[!!!br]\\$0 \\$@
144 .    el .do tm1 "\\*[!!!sp]*** trace exit \$1: \\*[!!!br]\\$0 \\$@
147 .  do !!ds !!a1 !!\$1
148 .  do !!ds !!a2 \$2
150 .  do ecr
151 .  do ami1 !!a1 !!a2
154 .rn return !!return
156 .!!de1 return
157 .  tm1 "\*[!!!sp]*** return
158 .  !!return twice
161 .rn substring !!substring
163 .!!de1 substring
164 .  !!substring \$*
165 .  tm1 "\*[!!!sp]*** .substring \$* (-> `\*[\$1]')
168 .rn als !!als
170 .!!de1 als
171 .  !!als \$1 \$2
172 .  if d !!\$2 \
173 .    !!als !!\$1 !!\$2
174 .  tm1 "\*[!!!sp]*** .als \$1 \$2
179 .cp \n(_C
181 .\" EOF