1########################################################################
2#
3# trivial utility functions
4#
5# $Revision: 1.2 $, $Date: 2000/03/06 19:36:59 $
6########################################################################
7proc b {num} {
8  return [format "%${num}s" ""]
9}
10########################################################################
11proc cat {infile} {
12  set in [open $infile]
13  set r [read $in]
14  return $r
15}
16########################################################################
17proc isInt {val} {
18  return [regexp {^[+-]?[0-9]+$} $val]
19}
20########################################################################
21proc isFloat {val} {
22  if {[catch {expr $val+0.0} res]} {return 0}
23  #if {$res!=$val} {return 0}
24  return 1
25}
26########################################################################
27proc negInfty {val} {
28  return [string match -oo $val]
29}
30########################################################################
31proc Infty {val} {
32  return [string match oo $val]
33}
34########################################################################
35proc Join {j args} {
36  return [join $args $j]
37}
38########################################################################
39