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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)pbimporter.tcl    /main/titanic/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)pbimporter.tcl    /main/titanic/5   18 Jul 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require pb_msg.tcl
  14. require pboopl.tcl
  15. require pbtarget.tcl
  16. require pbgentor.tcl
  17.  
  18. # End user added include file section
  19.  
  20. require "importer.tcl"
  21.  
  22. Class PbImporter : {Importer} {
  23.     constructor
  24.     method destructor
  25.     method generateOopl
  26.     method getOoplFileTypesToGenerateFor
  27.     method import
  28. }
  29.  
  30. constructor PbImporter {class this} {
  31.     set this [Importer::constructor $class $this]
  32.     # Start constructor user section
  33.     # End constructor user section
  34.     return $this
  35. }
  36.  
  37. method PbImporter::destructor {this} {
  38.     # Start destructor user section
  39.     # End destructor user section
  40.     $this Importer::destructor
  41. }
  42.  
  43. method PbImporter::generateOopl {this classes} {
  44.     set fileHandler [PBFileHandler new]
  45.     $fileHandler sourceTclFiles
  46.     set selectedClasses [List new]
  47.  
  48.     foreach class $classes {
  49.         if [$class isExternal] {
  50.             continue
  51.         }
  52.  
  53.         if {[$class getName] == ""} {
  54.             m4_warning $W_CLASS_WITHOUT_NAME
  55.         } else {
  56.             $selectedClasses append $class
  57.         }
  58.     }
  59.     set pbGenerator [PBGenerator new]
  60.     # export and import will check themselves for autolibrary feature
  61.     #  and returns whether there's an old library
  62.     
  63.     if {[$pbGenerator checkOldSrc $selectedClasses]} {
  64.         m4_error $EPB_HASOLDSRC
  65.         # there is old source, so stop
  66.         return
  67.     }
  68.  
  69.     set errornr [$pbGenerator exportSrc $selectedClasses]
  70.     if { $errornr != 0 } {
  71.         # something is/was  wrong, so don't generate
  72.         return
  73.     }
  74.     # generate source
  75.     set generatedSections [$pbGenerator generate $selectedClasses]
  76.     # write source to files
  77.     $generatedSections foreach class classToSection {
  78.         $classToSection foreach type section {
  79.             $fileHandler writeSectionToFile $section $class $type
  80.         }
  81.     }
  82.     # import src
  83.     if {[M4CheckManager::getErrorCount] == 0} {
  84.         set errornr [$pbGenerator importSrc $selectedClasses]
  85.     } else {
  86.         if {[$pbGenerator isAutoLibrary]} {
  87.             m4_error $EPB_NOIMPORT
  88.         }
  89.     }
  90. }
  91.  
  92. method PbImporter::getOoplFileTypesToGenerateFor {this} {
  93.     set fileHandler [PBFileHandler new]
  94.     return [[$fileHandler getFileTypes] contents]
  95. }
  96.  
  97. method PbImporter::import {this} {
  98.     set cc [ClientContext::global]
  99.     set prevPhaseV [[$cc currentPhase] previous [$cc currentConfig]]
  100.     if [$prevPhaseV isNil] {
  101.         m4_error $E_NO_PREV_PHASE [$cc levelNameAt Phase]
  102.         return
  103.     }
  104.     set sysName "PBBuiltins"
  105.     set sysV [$prevPhaseV findSystemVersion $sysName "system"]
  106.     if [$sysV isNil] {
  107.         m4_error $E_NOBUILTINSYS $sysName
  108.         return
  109.     }
  110.  
  111.     $this Importer::import
  112. }
  113.  
  114. # Do not delete this line -- regeneration end marker
  115.  
  116.