home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / classmaker.tcl < prev    next >
Text File  |  1996-05-29  |  2KB  |  66 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)classmaker.tcl    1.2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)classmaker.tcl    1.2   28 Feb 1995 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class ClassMaker : {Object} {
  16.     constructor
  17.     method destructor
  18. }
  19.  
  20. constructor ClassMaker {class this name} {
  21.     set this [Object::constructor $class $this $name]
  22.     # Start constructor user section
  23.     # End constructor user section
  24.     return $this
  25. }
  26.  
  27. method ClassMaker::destructor {this} {
  28.     # Start destructor user section
  29.     # End destructor user section
  30. }
  31.  
  32. proc ClassMaker::extend {baseClass className attributes} {
  33.     if {(! [isCommand "$baseClass"]) || [isCommand "$className"]} return
  34.  
  35.     set attrDef "\n"
  36.     foreach attr $attributes {
  37.     set attrDef [concat $attrDef "attribute $attr\n"]
  38.     }
  39.     set createCmd "\
  40.     Class $className : \{$baseClass\} \{\n\
  41.         method destructor\n\
  42.         constructor\n\
  43.         $attrDef\
  44.     \}"
  45.     if {[lsearch -exact ["$baseClass" info methods] destructor] != -1} {
  46.     set baseDestructCmd "\$this $baseClass::destructor\n"
  47.     } else {
  48.     set baseDestructCmd ""
  49.     }
  50.     set destructorCmd "\
  51.     method $className::destructor \{this\} \{\n\
  52.         $baseDestructCmd \
  53.     \}"
  54.     set constructorCmd "\
  55.     constructor $className \{class this name\} \{\n\
  56.         set this \[$baseClass::constructor \$class \$this \$name\]\n\
  57.         return \$this\n\
  58.     \}"
  59.     eval $createCmd
  60.     eval $destructorCmd
  61.     eval $constructorCmd
  62. }
  63.  
  64. # Do not delete this line -- regeneration end marker
  65.  
  66.