trace.tmac   [plain text]


.\" trace.tmac
.\"
.\" Load this before a macro package that you want to trace.
.
.nr _C \n(.C
.cp 0
.
.do ds !!sp " \"
.
.eo
.
.rn de !!de
.rn de1 !!de1
.
.
.!!de de
.  do ecs
.  ec
.  do !!de \$1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** de trace enter: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** de trace enter \$1: \\$0 \\$@
.    do as !!sp " \"
.    do nop \\*[!!\$1]\\
.    do substring !!sp 1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** trace exit: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** trace exit \$1: \\$0 \\$@
\..
.
.  do ds !!d1 !!\$1
.  do ds !!d2 \$2
.
.  do ecr
.  do dei !!d1 !!d2
..
.
.!!de de1
.  do ecs
.  ec
.  do !!de \$1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** de1 trace enter: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** de1 trace enter \$1: \\$0 \\$@
.    do as !!sp " \"
.    do nop \\*[!!\$1]\\
.    do substring !!sp 1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** trace exit: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** trace exit \$1: \\$0 \\$@
\..
.
.  do ds !!d1 !!\$1
.  do ds !!d2 \$2
.
.  do ecr
.  do dei1 !!d1 !!d2
..
.
.rn am !!am
.rn am1 !!am1
.
.!!de am
.  do ecs
.  ec
.  do !!de \$1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** am trace enter: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** am trace enter \$1: \\$0 \\$@
.    do as !!sp " \"
.    do nop \\*[!!\$1]\\
.    do substring !!sp 1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** trace exit: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** trace exit \$1: \\$0 \\$@
\..
.
.  do ds !!a1 !!\$1
.  do ds !!a2 \$2
.
.  do ecr
.  do ami !!a1 !!a2
..
.
.!!de am1
.  do ecs
.  ec
.  do !!de \$1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** am1 trace enter: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** am1 trace enter \$1: \\$0 \\$@
.    do as !!sp " \"
.    do nop \\*[!!\$1]\\
.    do substring !!sp 1
.    ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** trace exit: \\$0 \\$@
.    el .do tm1 "\\*[!!sp]*** trace exit \$1: \\$0 \\$@
\..
.
.  do ds !!a1 !!\$1
.  do ds !!a2 \$2
.
.  do ecr
.  do ami1 !!a1 !!a2
..
.
.rn return !!return
.
.!!de1 return
.  substring !!sp 1
.  tm1 "\*[!!sp]*** return
.  !!return twice
..
.
.ec
.
.cp \n(_C
.
.\" EOF