mycompiler.mytype
Class TyploseVariable

java.lang.Object
  extended by mycompiler.mytype.Type
      extended by mycompiler.mytype.TyploseVariable
All Implemented Interfaces:
IReplaceTypeEventProvider

public class TyploseVariable
extends Type
implements IReplaceTypeEventProvider

Repr�sentiert einen Typparameter f�r einen vom Programmierer nicht angegeben Typ. Jede TyploseVariable besitzt einen eindeutigen Namen aus einem Namenspool und ist in einer zentralen Registry, d.h. einer Hashtable abgelegt.

Version:
$Date: 2005/06/28 19:19:06 $
Author:
J�rg B�uerle

Field Summary
 
Fields inherited from class mycompiler.mytype.Type
hamaDebug, name, used
 
Method Summary
 void addReplacementListener(ITypeReplacementListener listener)
          
Author: J�rg B�uerle
static TyploseVariable backdoorCreate(java.lang.String name)
          Backdoor-Hilfsfunktion, die f�r makeFC() und unify() ben�tigt wird, zum Erzeugen einer TyplosenVariable, die nicht in der zentralen Registry eingetragen wird.
static TyploseVariable backdoorFresh()
          Backdoor-Hilfsfunktion, die f�r makeFC() und unify() ben�tigt wird, um neue typlose Variablen zu erzeugen.
 void backdoorSetName(java.lang.String varName)
          Backdoor-Hilfsfunktion, die f�r makeFC() und unify() ben�tigt wird, um den Namen einer typlosen Variablen zu ver�ndern.
 TyploseVariable clone()
          Diese Methode sollte nur sehr sparsam und mit Vorsicht verwendet werden, da die Registrierung neuer Listener �ber die zentrale Instanz in der Registry laufen muss.
 boolean containsListener(ITypeReplacementListener listener)
          
Author: J�rg B�uerle
static void deleteRegistry()
          L�scht die komplette Registry von TyplosenVariablen.
 boolean equals(java.lang.Object obj)
          Author: J�rg B�uerle
 void fireReplaceTypeEvent(CReplaceTypeEvent e)
          
Author: J�rg B�uerle
static TyploseVariable fresh()
          Erzeugt eine neue TyploseVariable mit einem eindeutigen Namen.
static TyploseVariable getInstance(java.lang.String name)
          Statische Methode, um einen typlose Variable aus der Registry zu holen.
 de.dhbwstuttgart.typeinference.Menge<java.lang.Integer> getLineNumbers()
           
 java.util.Iterator<ITypeReplacementListener> getReplacementListeners()
          
Author: J�rg B�uerle
 void removeAllReplacementListeners()
          
Author: J�rg B�uerle
 void removeReplacementListener(ITypeReplacementListener listener)
          
Author: J�rg B�uerle
 void replaceWithType(Type newType)
          Diese Methode geht alle TypeReplacmentListener durch und tauscht �ber deren Callback-Methode diesen Typ gegen den neuen aus.
 
Methods inherited from class mycompiler.mytype.Type
get_codegen_Type, get_Name, get_UsedId, getName, set_UsedId, toString, Type2Key, Type2String
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

getInstance

public static TyploseVariable getInstance(java.lang.String name)
Statische Methode, um einen typlose Variable aus der Registry zu holen.
Author: J�rg B�uerle

Parameters:
name - Der Name der typlosen Variablen
Returns:
Die typlose Variable oder null, falls sie nicht in der Registry existiert

fresh

public static TyploseVariable fresh()
Erzeugt eine neue TyploseVariable mit einem eindeutigen Namen. Die erzeugte Instanz ist die einzig im Syntaxbaum existierende Instanz dieser Variablen.
Author: J�rg B�uerle

Returns:
Die TyploseVariable

equals

public boolean equals(java.lang.Object obj)
Author: J�rg B�uerle

Overrides:
equals in class Type
Parameters:
Object -
Returns:

addReplacementListener

public void addReplacementListener(ITypeReplacementListener listener)

Author: J�rg B�uerle

Specified by:
addReplacementListener in interface IReplaceTypeEventProvider
Parameters:
listener -

containsListener

public boolean containsListener(ITypeReplacementListener listener)

Author: J�rg B�uerle

Specified by:
containsListener in interface IReplaceTypeEventProvider
Parameters:
listener -
Returns:

removeReplacementListener

public void removeReplacementListener(ITypeReplacementListener listener)

Author: J�rg B�uerle

Specified by:
removeReplacementListener in interface IReplaceTypeEventProvider
Parameters:
listener -

removeAllReplacementListeners

public void removeAllReplacementListeners()

Author: J�rg B�uerle

Specified by:
removeAllReplacementListeners in interface IReplaceTypeEventProvider

fireReplaceTypeEvent

public void fireReplaceTypeEvent(CReplaceTypeEvent e)

Author: J�rg B�uerle

Specified by:
fireReplaceTypeEvent in interface IReplaceTypeEventProvider
Parameters:
e -

getReplacementListeners

public java.util.Iterator<ITypeReplacementListener> getReplacementListeners()

Author: J�rg B�uerle

Specified by:
getReplacementListeners in interface IReplaceTypeEventProvider
Returns:

replaceWithType

public void replaceWithType(Type newType)
Diese Methode geht alle TypeReplacmentListener durch und tauscht �ber deren Callback-Methode diesen Typ gegen den neuen aus.
Author: J�rg B�uerle

Parameters:
newType -

getLineNumbers

public de.dhbwstuttgart.typeinference.Menge<java.lang.Integer> getLineNumbers()

deleteRegistry

public static void deleteRegistry()
L�scht die komplette Registry von TyplosenVariablen. Sollte nur und ausschlie�lich von MyCompiler.init() aufgerufen werden!!!
Author: J�rg B�uerle


clone

public TyploseVariable clone()
Diese Methode sollte nur sehr sparsam und mit Vorsicht verwendet werden, da die Registrierung neuer Listener �ber die zentrale Instanz in der Registry laufen muss.
Diese Methode erzeugt eine Kopie dieser zentralen Instanz. Listener, die sich �ber diese Kopie registrieren, werden sp�ter nicht �ber Status�nderungen benachrichtigt, d.h. ihre TyplosenVariablen werden nicht substituiert.
Author: J�rg B�uerle

Overrides:
clone in class Type
Returns:

backdoorFresh

public static TyploseVariable backdoorFresh()
Backdoor-Hilfsfunktion, die f�r makeFC() und unify() ben�tigt wird, um neue typlose Variablen zu erzeugen. Die erzeugten Variablen werden nicht registriert und sind v�llig losgel�st vom abstrakten Syntaxbaum.
Author: J�rg B�uerle

Returns:
Eine neue TyploseVariable

backdoorSetName

public void backdoorSetName(java.lang.String varName)
Backdoor-Hilfsfunktion, die f�r makeFC() und unify() ben�tigt wird, um den Namen einer typlosen Variablen zu ver�ndern.
ACHTUNG: Diese TyploseVariable darf nicht Teil des abstrakten Syntaxbaumes sein!!! Es muss sicher gestellt werden, dass die betreffende TyploseVariable nicht �ber die Methode fresh(), sondern �ber backdoorCreate() oder backdoorClone() erzeugt worden ist.
Author: J�rg B�uerle

Parameters:
varName - Der Name der zu erzeugenden TyplosenVariable

backdoorCreate

public static TyploseVariable backdoorCreate(java.lang.String name)
Backdoor-Hilfsfunktion, die f�r makeFC() und unify() ben�tigt wird, zum Erzeugen einer TyplosenVariable, die nicht in der zentralen Registry eingetragen wird. Die erzeugte Variablen ist somit v�llig losgel�st vom abstrakten Syntaxbaum.
Author: J�rg B�uerle

Parameters:
name -
Returns: