home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / TCL / ITCL / _ITCL.TAR / usr / lib / itcl / demos / toasters / Outlet.tcl < prev    next >
Encoding:
Text File  |  1994-03-21  |  2.7 KB  |  82 lines

  1. # ----------------------------------------------------------------------
  2. #  PURPOSE:  Electrical outlet supplying power for Appliances.
  3. #
  4. #   AUTHOR:  Michael J. McLennan       Phone: (610)712-2842
  5. #            AT&T Bell Laboratories   E-mail: michael.mclennan@att.com
  6. #
  7. #      RCS:  Outlet.tcl,v 1.1.1.1 1994/03/21 22:09:44 mmc Exp
  8. # ----------------------------------------------------------------------
  9. #               Copyright (c) 1993  AT&T Bell Laboratories
  10. # ======================================================================
  11. # Permission to use, copy, modify, and distribute this software and its
  12. # documentation for any purpose and without fee is hereby granted,
  13. # provided that the above copyright notice appear in all copies and that
  14. # both that the copyright notice and warranty disclaimer appear in
  15. # supporting documentation, and that the names of AT&T Bell Laboratories
  16. # any of their entities not be used in advertising or publicity
  17. # pertaining to distribution of the software without specific, written
  18. # prior permission.
  19. #
  20. # AT&T disclaims all warranties with regard to this software, including
  21. # all implied warranties of merchantability and fitness.  In no event
  22. # shall AT&T be liable for any special, indirect or consequential
  23. # damages or any damages whatsoever resulting from loss of use, data or
  24. # profits, whether in an action of contract, negligence or other
  25. # tortuous action, arising out of or in connection with the use or
  26. # performance of this software.
  27. # ======================================================================
  28.  
  29. itcl_class Outlet {
  30.     constructor {config} {}
  31.     method config {config} {}
  32.  
  33.     destructor {
  34.         if {$usage > 0} bill
  35.     }
  36.  
  37.     method use {power} {
  38.         set usage [expr $usage+$power]
  39.     }
  40.  
  41.     method sendBill {} {
  42.         if {[catch "open /tmp/bill w" fout] != 0} {
  43.             error "cannot create bill in /tmp"
  44.         } else {
  45.             set amount [format "$%.2f" [expr $usage*$rate]]
  46.             puts $fout "----------------------------------------"
  47.             puts $fout "/////////// MEGA-POWER, INC. ///////////"
  48.             puts $fout "----------------------------------------"
  49.             puts $fout "   Customer: $owner"
  50.             puts $fout "     Outlet: $this"
  51.             puts $fout "      Usage: $usage kilowatt-hours"
  52.             puts $fout "                                        "
  53.             puts $fout " Amount Due: $amount"
  54.             puts $fout "----------------------------------------"
  55.             close $fout
  56.             exec mail $owner < /tmp/bill
  57.             set usage 0
  58.         }
  59.     }
  60.  
  61.     proc bill {{customer *}} {
  62.         foreach outlet [itcl_info objects -class Outlet] {
  63.             set owner [$outlet info public owner -value]
  64.             if {[string match $customer $owner]} {
  65.                 $outlet sendBill
  66.             }
  67.         }
  68.     }
  69.  
  70.     proc rate {{newval ""}} {
  71.         if {$newval == ""} {
  72.             return $rate
  73.         }
  74.         set rate $newval
  75.     }
  76.  
  77.     public owner {}
  78.     protected usage 0
  79.  
  80.     common rate 0.05
  81. }
  82.