diff options
Diffstat (limited to 'itcl/itcl/tests/old/toasters/Outlet.tcl')
-rw-r--r-- | itcl/itcl/tests/old/toasters/Outlet.tcl | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/itcl/itcl/tests/old/toasters/Outlet.tcl b/itcl/itcl/tests/old/toasters/Outlet.tcl new file mode 100644 index 00000000000..27c69f552a5 --- /dev/null +++ b/itcl/itcl/tests/old/toasters/Outlet.tcl @@ -0,0 +1,81 @@ +# ---------------------------------------------------------------------- +# PURPOSE: Electrical outlet supplying power for Appliances. +# +# AUTHOR: Michael J. McLennan Phone: (610)712-2842 +# AT&T Bell Laboratories E-mail: michael.mclennan@att.com +# +# RCS: $Id$ +# ---------------------------------------------------------------------- +# Copyright (c) 1993 AT&T Bell Laboratories +# ====================================================================== +# Permission to use, copy, modify, and distribute this software and its +# documentation for any purpose and without fee is hereby granted, +# provided that the above copyright notice appear in all copies and that +# both that the copyright notice and warranty disclaimer appear in +# supporting documentation, and that the names of AT&T Bell Laboratories +# any of their entities not be used in advertising or publicity +# pertaining to distribution of the software without specific, written +# prior permission. +# +# AT&T disclaims all warranties with regard to this software, including +# all implied warranties of merchantability and fitness. In no event +# shall AT&T be liable for any special, indirect or consequential +# damages or any damages whatsoever resulting from loss of use, data or +# profits, whether in an action of contract, negligence or other +# tortuous action, arising out of or in connection with the use or +# performance of this software. +# ====================================================================== + +itcl_class Outlet { + constructor {config} {} + method config {config} {} + + destructor { + if {$usage > 0} bill + } + + method use {power} { + set usage [expr $usage+$power] + } + + method sendBill {} { + if {[catch "open /tmp/bill w" fout] != 0} { + error "cannot create bill in /tmp" + } else { + set amount [format "$%.2f" [expr $usage*$rate]] + puts $fout "----------------------------------------" + puts $fout "/////////// MEGA-POWER, INC. ///////////" + puts $fout "----------------------------------------" + puts $fout " Customer: $owner" + puts $fout " Outlet: $this" + puts $fout " Usage: $usage kilowatt-hours" + puts $fout " " + puts $fout " Amount Due: $amount" + puts $fout "----------------------------------------" + close $fout + exec mail $owner < /tmp/bill + set usage 0 + } + } + + proc bill {{customer *}} { + foreach outlet [itcl_info objects -class Outlet] { + set owner [$outlet info public owner -value] + if {[string match $customer $owner]} { + $outlet sendBill + } + } + } + + proc rate {{newval ""}} { + if {$newval == ""} { + return $rate + } + set rate $newval + } + + public owner {} + protected usage 0 + + common rate 0.05 +} |