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

  1. #---------------------------------------------------------------------------
  2. #
  3. # Copyright (c) 1995 by Cadre Technologies Inc.
  4. #
  5. # This software is furnished under a license and may be used only in
  6. # accordance with the terms of such license and with the inclusion of
  7. # the above copyright notice. This software or any other copies thereof
  8. # may not be provided or otherwise made available to any other person.
  9. # No title to and ownership of the software is hereby transferred.
  10. #
  11. # The information in this software is subject to change without notice
  12. # and should not be construed as a commitment by Cadre Technologies Inc.
  13. #
  14. #---------------------------------------------------------------------------
  15. #
  16. #    File        : @(#)cginit.tcl    /main/titanic/9
  17. #    Original date    : August 1995
  18. #    Description    : Initialization for codegeneration stuff
  19. #
  20. #---------------------------------------------------------------------------
  21. #
  22.  
  23. global classCount; set classCount 0
  24.  
  25. #
  26. #    Make sure all modules are loaded (needed for RevEng (otprint))
  27. #
  28.  
  29. global modHdlr
  30. set modHdlr [ModuleHandler new]
  31. $modHdlr setCurrentContext
  32.  
  33. #
  34. #    Require: source a file only once
  35. #
  36.  
  37. proc require {file} {
  38.     global required_files
  39.     if [info exists required_files($file)] {
  40.         return
  41.     }
  42.     set required_files($file) 1
  43.     read_require_file $file
  44. }
  45.  
  46. #
  47. #    Reload even if it has been sourced before
  48. #
  49.  
  50. proc require_with_reload {file} {
  51.     global required_files
  52.     set required_files($file) 1
  53.     read_require_file $file
  54. }
  55.  
  56. #
  57. #    require_all_module_files: requires the specified file from every 
  58. #    (active) module. 
  59. #
  60.  
  61. proc require_all_module_files {file} {
  62.     global required_files
  63.     if [info exists required_files($file)] {
  64.         return
  65.     }
  66.     set required_files($file) 1
  67.  
  68.     global modHdlr
  69.     foreach sfile [$modHdlr getSelectedFiles "tcl" $file] {
  70.         uplevel #0 source \{$sfile\}
  71.     }
  72. }
  73.  
  74. #
  75. #    Dot not call the next procedure directly, but use require or
  76. #    require_with_reload. If this procedure is called directly, the
  77. #    uplevel command may cause strange behaviour ...
  78. #
  79.  
  80. proc read_require_file {fullName} {
  81.     set fileName [lindex [split $fullName .] 0]
  82.     set fileType [lindex [split $fullName .] 1]
  83.     set cc [ClientContext::global]
  84.  
  85.     if [catch {
  86.         set cmd [$cc getCustomFileContents $fileName $fileType tcl]
  87.     } msg] {
  88.         puts $msg
  89.         return
  90.     }
  91.     uplevel #0 $cmd
  92. }
  93.