\chapter{Schnittstelle zu Umgebungen}
\label{cha_environment}

In diesem Abschnitt ist die Schnittstelle f"ur Umgebungen dargestellt.
Sie kann durch Funktionsaufrufe oder nach Syntaxerweiterung durch die
Verwendung entsprechender Schl"usselw"orter benutzt werden.

Sie entspricht nicht der innerhalb des {\tlmin} Systems verf"ugbaren
Schnittstelle \textit{Environment}.  Dies ist darin begr"undet,
da"s der hier abstrakt gehaltene Typ f"ur Umgebungen in der
systeminternen Variante offengelegt ist, um insbesondere der
Implementierung der Compilerschnittstelle Zugriff darauf zu geben.

\begin{alltt}
\textbf{interface} EnvironmentReflect
{\slshape (* System : Tycoon Compiler TLMin
   File   : Environment.ti
   Author : CK
   Date   : 09-JAN-1997
   Purpose: interface to tlmin-Environments uses for reflection
   Updates: 
*)}

\textbf{import}
  errorLog
  iter

\textbf{export}
  T <:\textbf{Ok}
  Signature <:\textbf{Ok}
  Binding <:\textbf{Ok}
  SyntaxTree <:\textbf{Ok}
  TMLCode <:\textbf{Ok}
  TVMCode <:\textbf{Ok}
  Result <:\textbf{Ok}
  new() :T
  names(environment :T) :iter.T(String)
  nameOfBinding(binding :Binding) :String
  signatureOfBinding(binding :Binding) :Signature
  printValueOfBinding(binding :Binding) :\textbf{Ok}
  printRuntimeValueOfBinding(binding :Binding) :\textbf{Ok}
  printOIDValueOfBinding(binding :Binding) :\textbf{Ok}
  getBinding(environment :T  name :String  
             log :errorLog.T) :Binding
  addBinding(environment :T  binding :Binding) :T
  deleteBinding(environment :T name :String log
                :errorLog.T) :T
  copyBinding(source :T destination :T name :String log
              :errorLog.T) :T
  copyBindingAs(source :T  destination :T  
                from :String  to :String  
                log :errorLog.T) :T
  moveBinding(source :T  destination :T 
              name :String  log :errorLog.T) :T
  insertSyntaxTree(env :T  syntaxTree :SyntaxTree) :T 
  insertTMLCode(env :T  tmlCode :TMLCode) :T 
  insertRuntimeValue(env :T  result :Result  
                     log :errorLog.T) :T
\textbf{end};
\end{alltt}
