home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / classmaker.tcl < prev    next >
Text File  |  1997-07-03  |  2KB  |  74 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)classmaker.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)classmaker.tcl    /main/titanic/1   3 Jul 1997 Copyright 1997 Cayenne Software Inc.
  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 {needsName 1}} {
  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.     if $needsName {
  55.     set constructorCmd "\
  56.         constructor $className \{class this name\} \{\n\
  57.         set this \[$baseClass::constructor \$class \$this \$name\]\n\
  58.         return \$this\n\
  59.         \}"
  60.      } else {
  61.     set constructorCmd "\
  62.         constructor $className \{class this\} \{\n\
  63.         set this \[$baseClass::constructor \$class \$this\]\n\
  64.         return \$this\n\
  65.         \}"
  66.     }
  67.     eval $createCmd
  68.     eval $destructorCmd
  69.     eval $constructorCmd
  70. }
  71.  
  72. # Do not delete this line -- regeneration end marker
  73.  
  74.