|
|
1.1 ! root 1: # ! 2: # showprocs.tcl -- ! 3: # ! 4: # Display procedure headers and bodies. ! 5: #------------------------------------------------------------------------------ ! 6: # Copyright 1992 Karl Lehenbauer and Mark Diekhans. ! 7: # ! 8: # Permission to use, copy, modify, and distribute this software and its ! 9: # documentation for any purpose and without fee is hereby granted, provided ! 10: # that the above copyright notice appear in all copies. Karl Lehenbauer and ! 11: # Mark Diekhans make no representations about the suitability of this ! 12: # software for any purpose. It is provided "as is" without express or ! 13: # implied warranty. ! 14: #------------------------------------------------------------------------------ ! 15: # $Id: showprocs.tcl,v 2.0 1992/10/16 04:52:11 markd Rel $ ! 16: #------------------------------------------------------------------------------ ! 17: # ! 18: ! 19: #@package: TclX-show_procedures showproc showprocs ! 20: ! 21: proc showproc {procname} { ! 22: if [lempty [info procs $procname]] {demand_load $procname} ! 23: set arglist [info args $procname] ! 24: set nargs {} ! 25: while {[llength $arglist] > 0} { ! 26: set varg [lvarpop arglist 0] ! 27: if [info default $procname $varg defarg] { ! 28: lappend nargs [list $varg $defarg] ! 29: } else { ! 30: lappend nargs $varg ! 31: } ! 32: } ! 33: format "proc %s \{%s\} \{%s\}\n" $procname $nargs [info body $procname] ! 34: } ! 35: ! 36: proc showprocs {args} { ! 37: if [lempty $args] { set args [info procs] } ! 38: set out "" ! 39: ! 40: foreach i $args { ! 41: foreach j $i { append out [showproc $j] "\n"} ! 42: } ! 43: return $out ! 44: } ! 45:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.