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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)communicat.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)communicat.tcl    /main/titanic/3   21 Jul 1997 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. require "systemutil.tcl"
  13. # End user added include file section
  14.  
  15.  
  16. # Definition of Communicator class that contains
  17. # utilities to communicate with wictk tools.
  18.  
  19. Class Communicator : {Object} {
  20.     method destructor
  21.     constructor
  22.     method stop
  23. }
  24.  
  25. method Communicator::destructor {this} {
  26.     # Start destructor user section
  27.     # End destructor user section
  28. }
  29.  
  30. constructor Communicator {class this name} {
  31.     set this [Object::constructor $class $this $name]
  32.     # Start constructor user section
  33.     # End constructor user section
  34.     return $this
  35. }
  36.  
  37.  
  38. # Return the M4 variables in a list.
  39. #
  40. proc Communicator::getEnv {} {
  41.     global env
  42.     set environment ""
  43.  
  44.     # read all env variables
  45.     if {[info exists env]} {
  46.     foreach i [array names env] {
  47.         lappend environment [list $i $env($i)]
  48.     }
  49.     }
  50.     if [isCommand ORB::currentProcessId] {
  51.     lappend environment [list M4_parent_pid [ORB::currentProcessId]]
  52.     }
  53.     return $environment
  54. }
  55.  
  56.  
  57. # Return the M4 variables and their values in a list.
  58. #
  59. proc Communicator::getM4Env {} {
  60.     set M4environment ""
  61.     m4_var foreach m4var {
  62.     lappend M4environment [list $m4var [m4_var get $m4var]]
  63.     }
  64.     return $M4environment
  65. }
  66.  
  67.  
  68. # Set the environment and M4 variables according to 'environment'.
  69. #
  70. proc Communicator::setEnv {environment} {
  71.     global env
  72.     if {[info exists env]} {
  73.     foreach i [array names env] {
  74.         unset env($i)
  75.     }
  76.     }
  77.     foreach envVar $environment {
  78.          set env([lindex $envVar 0]) [lindex $envVar 1]
  79.     }
  80. }
  81.  
  82. proc Communicator::setM4Env {m4env} {
  83.     # No longer necessary: child processes construct their M4 env
  84.     # correctly when all os-env variables are transmitted.
  85. }
  86.  
  87.  
  88. # Syntax: interp <name> [<host>]
  89. # Find a (running) interpreter specified by <name> (and <host>).
  90. #
  91. proc Communicator::interp {name {host ""}} {
  92.     set myInterp "[get_comm_name]"
  93.  
  94.     if {"$name" == ""} {return ""}
  95.     if {"$host" == ""} {set host "[lindex $myInterp 1]"}
  96.  
  97.     set tools [interps]
  98.     foreach tool $tools {
  99.     if {("[lindex $tool 0]" != "$name") ||
  100.         ("[lindex $tool 1]" != "$host") ||
  101.         ("[lindex $tool 2]" != "[lindex $myInterp 2]") ||
  102.         (! [isRunning "$tool"])} continue
  103.     return "$tool"
  104.     }
  105.     return "$name $host [lindex $myInterp 2]"
  106. }
  107.  
  108. method Communicator::stop {this} {
  109.     $this delete
  110.     exit
  111. }
  112.  
  113. # Do not delete this line -- regeneration end marker
  114.  
  115.