diff options
Diffstat (limited to 'ipl/mprogs/cnvsum.icn')
-rw-r--r-- | ipl/mprogs/cnvsum.icn | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/ipl/mprogs/cnvsum.icn b/ipl/mprogs/cnvsum.icn deleted file mode 100644 index b5e446a..0000000 --- a/ipl/mprogs/cnvsum.icn +++ /dev/null @@ -1,117 +0,0 @@ -############################################################################ -# -# File: cnvsum.icn -# -# Subject: Program to tabulate type-conversion activity -# -# Author: Ralph E. Griswold -# -# Date: August 13, 1994 -# -############################################################################ -# -# This file is in the public domain. -# -############################################################################ -# -# This tool tabulates type-conversion activity. It is called as -# -# cnvsum prog -# -# where prog is a program compiled under MT Icon whose events are to -# be tabulated. -# -# The options supported are: -# -# -o s write output to file s; default &output. -# -# -t record time spent in monitoring. -# -############################################################################ -# -# Requires: MT Icon and event monitoring. -# -############################################################################ -# -# Links: evinit, options, procname, typecode -# -############################################################################ -# -# Includes: evdefs.icn -# -############################################################################ - -link evinit -link options -link procname -link typecode - -$include "evdefs.icn" - -procedure main(args) - local opts, itime, cnvlist, esucctbl, efailtbl, isucctbl, ifailtbl, output - local mmask, cmask, in, pair, name - - opts := options(args, "o:t") - - output := open(\opts["o"], "w") | &output - - if \opts["t"] then itime := &time - - EvInit(args) | stop("*** cannot load program") # initialize interface - - esucctbl := table(0) - efailtbl := table(0) - isucctbl := table(0) - ifailtbl := table(0) - - mmask := E_Fcall ++ E_Aconv - cmask := E_Fconv ++ E_Sconv ++ E_Nconv - - while EvGet(mmask) do { - case &eventcode of { - E_Fcall: { - if (name := procname(&eventvalue)) == - ("integer" | "string" | "cset" | "real") then { - in := name[1] - EvGet(E_Tconv) - pair := in || typecode(&eventvalue) - EvGet(cmask) - case &eventcode of { - E_Sconv: esucctbl[pair] +:= 1 - E_Fconv: efailtbl[pair] +:= 1 - } - } - } - E_Aconv: { - in := typecode(&eventvalue) - EvGet(E_Tconv) - pair := in || typecode(&eventvalue) - EvGet(cmask) - case &eventcode of { - E_Sconv: isucctbl[pair] +:= 1 - E_Fconv: ifailtbl[pair] +:= 1 - } - } - } - } - - cnvlist := sort(esucctbl, 3) - write(output, "\nExplicit successful conversions:\n") - while write(output, get(cnvlist), right(get(cnvlist), 7)) - - cnvlist := sort(efailtbl, 3) - write(output, "\nExplicit failed conversions:\n") - while write(output, get(cnvlist), right(get(cnvlist), 7)) - - cnvlist := sort(isucctbl, 3) - write(output, "\nImplicit successful conversions:\n") - while write(output, get(cnvlist), right(get(cnvlist), 7)) - - cnvlist := sort(ifailtbl, 3) - write(output, "\nImplicit failed conversions:\n") - while write(output, get(cnvlist), right(get(cnvlist), 7)) - - write(output, "\nelapsed time: ", &time - \itime, "ms") - -end |