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.
 java.util.Vector<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 java.util.Vector<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: