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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)moduledb.tcl    /main/titanic/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)moduledb.tcl    /main/titanic/2   3 Oct 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. OtkRegister::license
  13.  
  14. require "moduledbdi.tcl"
  15. require "selmodfilt.tcl"
  16. # End user added include file section
  17.  
  18.  
  19. Class ModuleDB : {GCObject} {
  20.     constructor
  21.     method destructor
  22.     method getModulePropDict
  23.     method getModulePropNames
  24.     method getModulePaths
  25.     method getFilteredModulePaths
  26.     method isValidModule
  27.     method getModuleDBDirInfo
  28.     method getModuleDBPathInfo
  29.     method getModDirInfo
  30.     method setModDirInfo
  31.     method removeModDirInfo
  32.     attribute defaultModDir
  33.     attribute modDirInfo
  34. }
  35.  
  36. global ModuleDB::instance
  37. set ModuleDB::instance ""
  38.  
  39.  
  40. constructor ModuleDB {class this} {
  41.     set this [GCObject::constructor $class $this]
  42.     $this modDirInfo [Dictionary new]
  43.     # Start constructor user section
  44.     $this defaultModDir [path_name concat [m4_var get M4_home] modules]
  45.     # End constructor user section
  46.     return $this
  47. }
  48.  
  49. method ModuleDB::destructor {this} {
  50.     # Start destructor user section
  51.     # End destructor user section
  52. }
  53.  
  54. proc ModuleDB::global {} {
  55.     global ModuleDB::instance
  56.     if {${ModuleDB::instance} == ""} {
  57.         set ModuleDB::instance [ModuleDB new]
  58.     }
  59.     return ${ModuleDB::instance}
  60. }
  61.  
  62. proc ModuleDB::rehash {} {
  63.     global ModuleDB::instance
  64.     set ModuleDB::instance [ModuleDB new]
  65. }
  66.  
  67. method ModuleDB::getModulePropDict {this modulePath} {
  68.     set modPathInfo [$this getModuleDBPathInfo $modulePath]
  69.     return [$modPathInfo propValue]
  70. }
  71.  
  72. method ModuleDB::getModulePropNames {this modulePath} {
  73.     set modPathInfo [$this getModuleDBPathInfo $modulePath]
  74.     return [$modPathInfo propNameSet]
  75. }
  76.  
  77. method ModuleDB::getModulePaths {this moduleDir} {
  78.     set modDirInfo [$this getModuleDBDirInfo $moduleDir]
  79.     set pathList [List new]
  80.     [$modDirInfo modPathInfo] foreach key modPathInfo {
  81.         if ![$modPathInfo isValidModule] {
  82.             continue
  83.         }
  84.         $pathList append [$modPathInfo modulePath]
  85.     }
  86.     return $pathList
  87. }
  88.  
  89. method ModuleDB::getFilteredModulePaths {this moduleDir filter} {
  90.     set pathList [$this getModulePaths $moduleDir]
  91.     set filteredPathList [List new]
  92.     $pathList foreach modulePath {
  93.         if [$filter passes $modulePath] {
  94.             $filteredPathList append $modulePath
  95.         }
  96.     }
  97.     return $filteredPathList
  98. }
  99.  
  100. method ModuleDB::isValidModule {this modulePath} {
  101.     set modPathInfo [$this getModuleDBPathInfo $modulePath]
  102.     return [$modPathInfo isValidModule]
  103. }
  104.  
  105. method ModuleDB::getModuleDBDirInfo {this moduleDir} {
  106.     set modDirInfo [$this getModDirInfo $moduleDir]
  107.     if {$modDirInfo == ""} {
  108.         set modDirInfo [ModuleDBDirInfo new $moduleDir]
  109.         $this setModDirInfo $moduleDir $modDirInfo
  110.     }
  111.     return $modDirInfo
  112. }
  113.  
  114. method ModuleDB::getModuleDBPathInfo {this modulePath} {
  115.     set moduleDir [path_name directory $modulePath]
  116.     set modDirInfo [$this getModuleDBDirInfo $moduleDir]
  117.     set moduleName [path_name file $modulePath]
  118.     return [$modDirInfo getModuleDBPathInfo $moduleName]
  119. }
  120.  
  121. # Do not delete this line -- regeneration end marker
  122.  
  123. method ModuleDB::getModDirInfo {this moduleDir} {
  124.     return [[$this modDirInfo] set $moduleDir]
  125. }
  126.  
  127. method ModuleDB::setModDirInfo {this moduleDir newModDirInfo} {
  128.     [$this modDirInfo] set $moduleDir $newModDirInfo
  129. }
  130.  
  131. method ModuleDB::removeModDirInfo {this moduleDir} {
  132.     [$this modDirInfo] unset $moduleDir
  133. }
  134.  
  135.