home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / cadmodel.tcl < prev    next >
Text File  |  1997-11-26  |  3KB  |  123 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)cadmodel.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)cadmodel.tcl    /main/titanic/1   26 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "cadbinarya.tcl"
  13. require "cadclass.tcl"
  14. require "cadinhergr.tcl"
  15. require "cadnassocc.tcl"
  16. require "cadnassocn.tcl"
  17.  
  18. require "cadmodeltp.tcl"
  19. # End user added include file section
  20.  
  21.  
  22. Class CADModel : {Object} {
  23.     method destructor
  24.     constructor
  25.     method load
  26.     method loadClasses
  27.     method getClasses
  28.     method defineSMTypes
  29.     method makeSMTypeName
  30.     method addClass
  31.     method removeClass
  32.     attribute loaded
  33.     attribute classSet
  34. }
  35.  
  36. method CADModel::destructor {this} {
  37.     # Start destructor user section
  38.     # End destructor user section
  39. }
  40.  
  41. constructor CADModel {class this} {
  42.     set this [Object::constructor $class $this $this]
  43.     $this loaded 0
  44.     $this classSet [List new]
  45.  
  46.     # Define global available SMTypes
  47.     $this defineSMTypes
  48.  
  49.     # Add creator scripts to the ObjectFactory
  50.     set objFac [$this getObjectFactory]
  51.     $objFac addCreatorScript $OMT_CAD_NAssoc \
  52.         "return \[CADNAssocNode new $this]"
  53.     $objFac addCreatorScript $OMT_CAD_NaryAssocConn \
  54.         "return \[CADNAssocConn new $this]"
  55.     # Combined types
  56.     $objFac addCreatorScript $OMT_CAD_CB_Class \
  57.         "return \[CADClass new $this]"
  58.     $objFac addCreatorScript $OMT_CAD_CB_Generalization \
  59.         "return \[CADInherGroup new $this]"
  60.     $objFac addCreatorScript $OMT_CAD_CB_Association \
  61.         "return \[CADBinaryAssoc new $this]"
  62.  
  63.     return $this
  64. }
  65.  
  66. method CADModel::load {this} {
  67.     if {[$this loaded] == 1} {
  68.         return
  69.     }
  70.     $this loaded 1
  71.     $this loadClasses
  72. }
  73.  
  74. method CADModel::loadClasses {this} {
  75.     set classes [$this getSMObjects $OMT_CAD_CB_Class]
  76.     foreach class $classes {
  77.         $this addClass $class
  78.     }
  79. }
  80.  
  81. method CADModel::getClasses {this} {
  82.     $this load
  83.     return [$this classSet]
  84. }
  85.  
  86. method CADModel::defineSMTypes {this} {
  87.     set typeIter [SMTypeIter new]
  88.     while {[$typeIter current] != ""} {
  89.         set smType [$typeIter current]
  90.         if { ![string match CAD* [$smType name]]} {
  91.             $typeIter next
  92.             continue
  93.         }
  94.         set name [$this makeSMTypeName [$smType name]]
  95.         eval "global $name"
  96.         eval "set $name $smType"
  97.         $typeIter next
  98.     }
  99.     $typeIter delete
  100.  
  101.     global anySMType; set anySMType [SMTypeDB::any]
  102.     global nilSMType; set nilSMType [SMTypeDB::nil]
  103.  
  104.     return
  105. }
  106.  
  107. method CADModel::makeSMTypeName {this type} {
  108.     regsub -all "\[ \t]+" $type "_" type
  109.     return "OMT_$type"
  110. }
  111.  
  112. # Do not delete this line -- regeneration end marker
  113.  
  114. method CADModel::addClass {this newClass} {
  115.     [$this classSet] append $newClass
  116.  
  117. }
  118.  
  119. method CADModel::removeClass {this oldClass} {
  120.     [$this classSet] removeValue $oldClass
  121. }
  122.  
  123.