de.dhbwstuttgart.syntaxtree.type

## Class TypePlaceholder

- java.lang.Object
- - de.dhbwstuttgart.syntaxtree.SyntaxTreeNode
  - - de.dhbwstuttgart.syntaxtree.type.Type
    - - de.dhbwstuttgart.syntaxtree.type.ObjectType
      - - de.dhbwstuttgart.syntaxtree.type.TypePlaceholder

- All Implemented Interfaces:
    IItemWithOffset

      public class TypePlaceholder
      extends ObjectType

  ReprÃ¯Â¿Â½sentiert einen Typparameter fÃ¯Â¿Â½r einen vom Programmierer nicht angegeben Typ. Jede TypePlaceholder besitzt einen eindeutigen Namen aus einem Namenspool und ist in einer zentralen Registry, d.h. einer `Hashtable` abgelegt.
  Version:
    $Date: 2013/06/19 12:45:37 $
  Author:
    JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static Logger` | `log`
    `private static java.util.Hashtable<JavaClassName,TypePlaceholder>` | `m_TypePlaceholdersRegistry`
    `private SyntaxTreeNode` | `parent`
    `private static java.lang.String` | `strNextName`

    - ### Fields inherited from class de.dhbwstuttgart.syntaxtree.type.Type

      `name, used`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `private` | `TypePlaceholder(java.lang.String typeName, SyntaxTreeNode parent)` Privater Konstruktor - Eine TypePlaceholder-Variable wird Ã¯Â¿Â½ber die Factory-Methode `fresh()` erzeugt.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static TypePlaceholder` | `backdoorCreate(java.lang.String name)` Backdoor-Hilfsfunktion, die fÃ¯Â¿Â½r `makeFC()` und `unify()` benÃ¯Â¿Â½tigt wird, zum Erzeugen eines `TypePlaceholders`, der nicht in der zentralen Registry eingetragen wird.
    `static TypePlaceholder` | `backdoorFresh()` Backdoor-Hilfsfunktion, die fÃ¯Â¿Â½r `makeFC()` und `unify()` benÃ¯Â¿Â½tigt wird, um neue TypePlaceholders zu erzeugen.
    `void` | `backdoorSetName(java.lang.String varName)` Backdoor-Hilfsfunktion, die fÃ¯Â¿Â½r `makeFC()` und `unify()` benÃ¯Â¿Â½tigt wird, um den Namen eines TypePlaceholders zu verÃ¯Â¿Â½ndern.
    `TypePlaceholder` | `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.
    `static void` | `deleteRegistry()` LÃ¯Â¿Â½scht die komplette Registry von TypePlaceholders.
    `boolean` | `equals(java.lang.Object obj)` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
    `static TypePlaceholder` | `fresh(java.lang.String name, SyntaxTreeNode parent)` Generiert einen neuen TPH mit einem bestimmten Namen.
    `static TypePlaceholder` | `fresh(SyntaxTreeNode parent)`
    `java.lang.String` | `get_Name()`
    `static TypePlaceholder` | `getInstance(java.lang.String name)` Statische Methode, um einen TypePlaceholder aus der Registry zu holen.
    `Menge<TypePlaceholder>` | `getInvolvedTypePlaceholder()` Sammelt alle TypePlaceholder, welche in diesem Typ vorkommen.
    `Menge<TypeInsertPoint>` | `getTypeInsertPoints(ResultSet result)` Berechnet die InsertPoints dieses TypePlaceholders.
    `Menge<TypePlaceholder>` | `getUnresolvedTPH(ResultSet resultSet)` Sucht nach TPHs in diesem Typ, denen das resultSet keinen Typ zuordnen kann.
    `private static void` | `inc(int i)` Hilfsfunktion zur Berechnung eines neuen Namens Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
    `private static java.lang.String` | `makeNewName()` Berechnet einen neuen, eindeutigen Namen fÃ¯Â¿Â½r eine neue `TypePlaceholder`.
    `private static void` | `manipulate(int nStelle, char nWert)` Hilfsfunktion zur Berechnung eines neuen Namens.
    `JavaCodeResult` | `printJavaCode(ResultSet resultSet)`
    `java.lang.String` | `toString()` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
    `ConstraintType` | `TYPE(TypeAssumptions ass, SyntaxTreeNode parent)` PrÃ¼ft ob der Typ in den Assumptions ass vorhanden ist.

    - ### Methods inherited from class de.dhbwstuttgart.syntaxtree.type.Type

      `applyResultSet, checkTYPE, get_UsedId, getChildren, getName, getOffset, getSimpleName, getSuperWildcardTypes, getVariableLength, involves, set_UsedId, setOffset, Type2Key, Type2String`

    - ### Methods inherited from class de.dhbwstuttgart.syntaxtree.SyntaxTreeNode

      `addTypeInsertPoints, getDescription, getGTVDeclarationContext, getMatchingParentNode, getParent, getParentClass, parserPostProcessing, seesType`

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### log

          private static final Logger log

    - #### strNextName

          private static java.lang.String strNextName

    - #### m_TypePlaceholdersRegistry

          private static java.util.Hashtable<JavaClassName,TypePlaceholder> m_TypePlaceholdersRegistry

    - #### parent

          private SyntaxTreeNode parent

  - ### Constructor Detail

    - #### TypePlaceholder

          private TypePlaceholder(java.lang.String typeName,
                                  SyntaxTreeNode parent)

      Privater Konstruktor - Eine TypePlaceholder-Variable wird Ã¯Â¿Â½ber die Factory-Methode `fresh()` erzeugt.
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Parameters:
        `typeName` - Der Name der TypePlaceholder-Variablen

  - ### Method Detail

    - #### TYPE

          public ConstraintType TYPE(TypeAssumptions ass,
                                     SyntaxTreeNode parent)

      Description copied from class: `Type`
      PrÃ¼ft ob der Typ in den Assumptions ass vorhanden ist. Dabei kann eine neue Instanz eines Typs entstehen, welche von der Methode zurÃ¼ckgegeben wird.
      Overrides:
        `TYPE` in class `Type`
      Parameters:
        `ass` - - Die Assumptions fÃ¼r den jeweiligen Kontext in dem sich der Typ befindet. public ConstraintType checkType(TypeAssumptions ass, SyntaxTreeNode parent){ ConstraintType t = ass.getTypeFor(this, this); if(t==null) throw new TypeinferenceException("Der Typ "+this.getName()+" ist nicht korrekt", parent); return t; }

    - #### getInstance

          public static TypePlaceholder getInstance(java.lang.String name)

      Statische Methode, um einen TypePlaceholder aus der Registry zu holen.
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Parameters:
        `name` - Der Name des TypePlaceholders
      Returns:
        Der TypePlaceholder oder `null`, falls er nicht in der Registry existiert

    - #### fresh

          public static TypePlaceholder fresh(java.lang.String name,
                                              SyntaxTreeNode parent)

      Generiert einen neuen TPH mit einem bestimmten Namen. Wird benÃ¶tigt, wenn aus Generischen Variablen TPH generiert werden.
      Parameters:
        `name` -
      Returns:

    - #### fresh

          public static TypePlaceholder fresh(SyntaxTreeNode parent)

      Parameters:
        `listener` -
      Returns:

    - #### getInvolvedTypePlaceholder

          public Menge<TypePlaceholder> getInvolvedTypePlaceholder()

      Description copied from class: `Type`
      Sammelt alle TypePlaceholder, welche in diesem Typ vorkommen.
      Overrides:
        `getInvolvedTypePlaceholder` in class `Type`
      Returns:

    - #### makeNewName

          private static java.lang.String makeNewName()

      Berechnet einen neuen, eindeutigen Namen fÃ¯Â¿Â½r eine neue `TypePlaceholder`.
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Returns:
        Der Name

    - #### inc

          private static void inc(int i)

      Hilfsfunktion zur Berechnung eines neuen Namens
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Parameters:
        `i` -

    - #### manipulate

          private static void manipulate(int nStelle,
                                         char nWert)

      Hilfsfunktion zur Berechnung eines neuen Namens.
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Parameters:
        `nStelle` -
        `nWert` -

    - #### equals

          public boolean equals(java.lang.Object obj)

      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Overrides:
        `equals` in class `Type`
      Parameters:
        `Object` -
      Returns:

    - #### deleteRegistry

          public static void deleteRegistry()

      LÃ¯Â¿Â½scht die komplette Registry von TypePlaceholders. Sollte nur und ausschlieÃ¯Â¿Â½lich von `MyCompiler.init()` aufgerufen werden!!!
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle

    - #### clone

          public TypePlaceholder 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 TypePlaceholders werden nicht substituiert.
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Specified by:
        `clone` in class `ObjectType`
      Returns:

    - #### get_Name

          public java.lang.String get_Name()

      Overrides:
        `get_Name` in class `Type`

    - #### toString

          public java.lang.String toString()

      Description copied from class: `Type`
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Overrides:
        `toString` in class `Type`

    - #### backdoorFresh

          public static TypePlaceholder backdoorFresh()

      Backdoor-Hilfsfunktion, die fÃ¯Â¿Â½r `makeFC()` und `unify()` benÃ¯Â¿Â½tigt wird, um neue TypePlaceholders 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 `TypePlaceholder`

    - #### backdoorSetName

          public void backdoorSetName(java.lang.String varName)

      Backdoor-Hilfsfunktion, die fÃ¯Â¿Â½r `makeFC()` und `unify()` benÃ¯Â¿Â½tigt wird, um den Namen eines TypePlaceholders zu verÃ¯Â¿Â½ndern.
      ACHTUNG: Diese `TypePlaceholder` darf nicht Teil des abstrakten Syntaxbaumes sein!!! Es muss sicher gestellt werden, dass die betreffende `TypePlaceholder` nicht Ã¯Â¿Â½ber die Methode `fresh()`, sondern Ã¯Â¿Â½ber `backdoorCreate()` oder `backdoorClone()` erzeugt worden ist.
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Parameters:
        `varName` - Der Name des zu erzeugenden `TypePlaceholders`

    - #### backdoorCreate

          public static TypePlaceholder backdoorCreate(java.lang.String name)

      Backdoor-Hilfsfunktion, die fÃ¯Â¿Â½r `makeFC()` und `unify()` benÃ¯Â¿Â½tigt wird, zum Erzeugen eines `TypePlaceholders`, der 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:

    - #### printJavaCode

          public JavaCodeResult printJavaCode(ResultSet resultSet)

      Overrides:
        `printJavaCode` in class `Type`

    - #### getTypeInsertPoints

          public Menge<TypeInsertPoint> getTypeInsertPoints(ResultSet result)

      Berechnet die InsertPoints dieses TypePlaceholders. Alle an diesem TypePlaceholder registrierten ITypeReplacementListener werden darauf kontrolliert, ob sie von TypeInsertable erben. Diese ergeben zusammen mit den Informationen aus dem Ã¼bergebenen ResultSet einen TypeInsertPoint. Mehrere TypeInsertPoint's ergeben ein TypeInsertSet.
      Parameters:
        `result` - Das ResultSet das den einzusetzenden Typ fÃ¼r diesen TPH enthÃ¤lt.
      Returns:
      See Also:
        `TypeInsertPoint`

    - #### getUnresolvedTPH

          public Menge<TypePlaceholder> getUnresolvedTPH(ResultSet resultSet)

      Description copied from class: `Type`
      Sucht nach TPHs in diesem Typ, denen das resultSet keinen Typ zuordnen kann.
      Overrides:
        `getUnresolvedTPH` in class `Type`
      Returns: