summaryrefslogtreecommitdiff
path: root/ipl/mprogs/cnvsum.icn
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/mprogs/cnvsum.icn')
-rw-r--r--ipl/mprogs/cnvsum.icn117
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