de.dhbwstuttgart.syntaxtree.type

## Class RefType

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

- All Implemented Interfaces:
    IItemWithOffset, IMatchable
  Direct Known Subclasses:
    FunN, Void

      public class RefType
      extends ObjectType
      implements IMatchable

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `IsArray` Ist IsArray auf true, muss beim Codegen ein Zeichen [ gesetzt werden Bsp.: 15| tag = CONSTANT_Utf8, length = 22, ([Ljava/lang/String;)V Ist IsArray auf false, muss beim Codegen ein Zeichen [ gesetzt werden Bsp.: 9| tag = CONSTANT_Utf8, length = 21, (Ljava/lang/String;)V
    `private Menge<Type>` | `parameter`
    `private boolean` | `primitiveFlag` Ist primitiveFlag auf true, muss beim Codegen dieser Reftype durch den primitiven Datentyp ersetzt werden Bsp: java.lang.Integer mit Flag wird dann zu [int]

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

      `name, used`

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

      `parent`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `RefType(JavaClassName jName, SyntaxTreeNode parent, int offset)`
    `` | `RefType(RefType R, SyntaxTreeNode parent, int offset)`
    `` | `RefType(java.lang.String fullyQualifiedName, Menge parameter, SyntaxTreeNode parent, int offset)`
    `` | `RefType(java.lang.String fullyQualifiedName, SyntaxTreeNode parent, int offset)`
    `protected` | `RefType(SyntaxTreeNode parent, int offset)`
    `` | `RefType(Type baseType)` Erstellt einen Referenztyp aus dem Ã¼bergebenen Type.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add_Parameter(Type o)`
    `Type` | `applyResultSet(ResultSet result)`
    `Type` | `checkTYPE(TypeAssumptions ass, SyntaxTreeNode method)`
    `RefType` | `clone()` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
    `boolean` | `equals(java.lang.Object obj)` Author: Jrg Buerle
    `boolean` | `Equiv2Equal(RefType ty2, java.util.Hashtable<JavaClassName,Type> ht)`
    `GenericTypeVar` | `findGenericType(Menge<Type> paralist, Menge<GenericTypeVar> methodParaList)` HOTI Diese Methode sucht in der Klassendefinition nach einen GTV, die so heiÃt wie die im RefType definierte Variable.
    `CSubstitutionSet` | `GenericTypeVar2TypePlaceholder()` Wandelt die Parameter des RefTypes in TPHs um, sofern es sich um Generische Variablen handelt.
    `java.lang.String` | `get_Name()`
    `Menge<Type>` | `get_ParaList()`
    `Menge<SyntaxTreeNode>` | `getChildren()`
    `Menge<TypePlaceholder>` | `getInvolvedTypePlaceholder()` Sammelt alle TypePlaceholder, welche in diesem Typ vorkommen.
    `Type` | `getMatchType()` Author: Arne LÃ¼dtke Gibt den Typen zurÃ¼ck, der bei einem match im Unify verwendet werden soll.
    `JavaClassName` | `getName()`
    `Menge<Type>` | `getParaList()`
    `java.lang.String` | `getParaN(int n)`
    `boolean` | `getPrimitiveFlag()`
    `java.lang.String` | `getSimpleName()` HOTI Liefert bei Klassen die fullyQualified angegeben wurden nur den schlussendlichen Bezeichner p.ex. de.dhbwstuttgart.typeinference.Menge => Menge
    `java.util.ArrayList<SuperWildcardType>` | `getSuperWildcardTypes()` Liefert alle SuperWildcardTypes, die in diesem Typ enthalten sind.
    `java.lang.String` | `getTypeName()`
    `Menge<TypePlaceholder>` | `getUnresolvedTPH(ResultSet resultSet)` Sucht nach TPHs in diesem Typ, denen das resultSet keinen Typ zuordnen kann.
    `void` | `GTV2TPH(SyntaxTreeNode environment)` Wandelt die Parameter des RefTypes in TPHs um, sofern es sich um Generische Variablen handelt.
    `int` | `hashCode()`
    `boolean` | `is_Equiv(RefType ty2, java.util.Hashtable<JavaClassName,Type> ht)`
    `boolean` | `IsArray()` Author: Daniel Feinler Handelt ab, ob der Typ eines Objekts ein Array ist, wenn true dann wird im Bytecode ein flag gesetzt wenn nicht, dann halt nicht.
    `boolean` | `isTV(int n)`
    `void` | `parserPostProcessing(SyntaxTreeNode parent)` Wird nach dem Parsen aufgerufen.
    `JavaCodeResult` | `printJavaCode(ResultSet resultSet)`
    `void` | `set_ParaList(Menge<Type> v)` FÃ¼gt eine Parameterliste an und tauscht zuvor alle GenerictTypeVars durch TPH aus.
    `void` | `setArray(boolean IsArray)` Author: Daniel Feinler Handelt ab, ob der Typ eines Objekts ein Array ist, wenn true dann wird im Bytecode ein flag gesetzt wenn nicht, dann halt nicht.
    `void` | `setName(JavaClassName name)`
    `void` | `setName(java.lang.String name)`
    `void` | `setPrimitiveFlag(boolean b)`
    `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.
    `java.lang.String` | `Type2Key()`
    `java.lang.String` | `Type2String()`

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

      `get_UsedId, getOffset, getVariableLength, involves, set_UsedId, setOffset`

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

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

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

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

- - ### Field Detail

    - #### IsArray

          private boolean IsArray

      Ist IsArray auf true, muss beim Codegen ein Zeichen [ gesetzt werden Bsp.: 15| tag = CONSTANT_Utf8, length = 22, ([Ljava/lang/String;)V Ist IsArray auf false, muss beim Codegen ein Zeichen [ gesetzt werden Bsp.: 9| tag = CONSTANT_Utf8, length = 21, (Ljava/lang/String;)V

    - #### parameter

          private Menge<Type> parameter

    - #### primitiveFlag

          private boolean primitiveFlag

      Ist primitiveFlag auf true, muss beim Codegen dieser Reftype durch den primitiven Datentyp ersetzt werden Bsp: java.lang.Integer mit Flag wird dann zu [int]

  - ### Constructor Detail

    - #### RefType

          protected RefType(SyntaxTreeNode parent,
                            int offset)

    - #### RefType

          public RefType(java.lang.String fullyQualifiedName,
                         SyntaxTreeNode parent,
                         int offset)

    - #### RefType

          public RefType(java.lang.String fullyQualifiedName,
                         Menge parameter,
                         SyntaxTreeNode parent,
                         int offset)

    - #### RefType

          public RefType(RefType R,
                         SyntaxTreeNode parent,
                         int offset)

    - #### RefType

          public RefType(Type baseType)

      Erstellt einen Referenztyp aus dem Ã¼bergebenen Type. Dabei wird der Name und der Offset des baseType's Ã¼bernommen.
      Parameters:
        `baseType` -

    - #### RefType

          public RefType(JavaClassName jName,
                         SyntaxTreeNode parent,
                         int offset)

  - ### Method Detail

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### Type2Key

          public java.lang.String Type2Key()

      Overrides:
        `Type2Key` in class `Type`

    - #### Type2String

          public java.lang.String Type2String()

      Overrides:
        `Type2String` in class `Type`

    - #### GenericTypeVar2TypePlaceholder

          public CSubstitutionSet GenericTypeVar2TypePlaceholder()

      Wandelt die Parameter des RefTypes in TPHs um, sofern es sich um Generische Variablen handelt.
      Returns:

    - #### GTV2TPH

          public void GTV2TPH(SyntaxTreeNode environment)

      Wandelt die Parameter des RefTypes in TPHs um, sofern es sich um Generische Variablen handelt.

    - #### findGenericType

          public GenericTypeVar findGenericType(Menge<Type> paralist,
                                                Menge<GenericTypeVar> methodParaList)

      HOTI Diese Methode sucht in der Klassendefinition nach einen GTV, die so heiÃt wie die im RefType definierte Variable. Wenn sie diese gefunden hat, wird sie zurÃ¼ckgeben. Wenn dies nicht der Fall war, schaut sie, falls angegeben in den Methodenparametern nach. Findet sie dort auch nichts, liefert die Methode null.
      Parameters:
        `type` -
      Returns:

    - #### setName

          public void setName(java.lang.String name)

    - #### setName

          public void setName(JavaClassName name)

    - #### get_Name

          public java.lang.String get_Name()

      Overrides:
        `get_Name` in class `Type`

    - #### getName

          public JavaClassName getName()

      Overrides:
        `getName` in class `Type`

    - #### set_ParaList

          public void set_ParaList(Menge<Type> v)

      FÃ¼gt eine Parameterliste an und tauscht zuvor alle GenerictTypeVars durch TPH aus. In einem RefType dÃ¼rfen keine GTVs enthalten sein.
      Parameters:
        `v` -

    - #### get_ParaList

          public Menge<Type> get_ParaList()

      Returns:
        gibt bei leere Parameterliste null zurÃ¼ck. Ist entscheidend fÃ¼r unify-Algorithmus

    - #### getParaList

          public Menge<Type> getParaList()

    - #### add_Parameter

          public void add_Parameter(Type o)

    - #### getTypeName

          public java.lang.String getTypeName()

    - #### getParaN

          public java.lang.String getParaN(int n)
                                    throws SCException

      Throws:
        `SCException`

    - #### isTV

          public boolean isTV(int n)

    - #### is_Equiv

          public boolean is_Equiv(RefType ty2,
                                  java.util.Hashtable<JavaClassName,Type> ht)

    - #### Equiv2Equal

          public boolean Equiv2Equal(RefType ty2,
                                     java.util.Hashtable<JavaClassName,Type> ht)

    - #### equals

          public boolean equals(java.lang.Object obj)

      Author: Jrg Buerle
      Overrides:
        `equals` in class `Type`
      Parameters:
        `Object` -
      Returns:

    - #### clone

          public RefType clone()

      Description copied from class: `Type`
      Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
      Specified by:
        `clone` in class `ObjectType`
      Returns:
        // ino.end // ino.method.clone.26768.definition public Type clone() // ino.end // ino.method.clone.26768.body { return new RefType(this.getName().toString(), this.getParent(),getOffset()); } // ino.end

    - #### toString

          public java.lang.String toString()

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

    - #### getSimpleName

          public java.lang.String getSimpleName()

      HOTI Liefert bei Klassen die fullyQualified angegeben wurden nur den schlussendlichen Bezeichner p.ex. de.dhbwstuttgart.typeinference.Menge => Menge
      Overrides:
        `getSimpleName` in class `Type`
      Returns:

    - #### setPrimitiveFlag

          public void setPrimitiveFlag(boolean b)

    - #### getPrimitiveFlag

          public boolean getPrimitiveFlag()

    - #### IsArray

          public boolean IsArray()

      Author: Daniel Feinler
      Handelt ab, ob der Typ eines Objekts ein Array ist, wenn true dann wird im Bytecode ein flag gesetzt wenn nicht, dann halt nicht.
      Returns:
        the IsArray

    - #### setArray

          public void setArray(boolean IsArray)

      Author: Daniel Feinler
      Handelt ab, ob der Typ eines Objekts ein Array ist, wenn true dann wird im Bytecode ein flag gesetzt wenn nicht, dann halt nicht.
      Parameters:
        `IsArray` - the IsArray to set

    - #### getMatchType

          public Type getMatchType()

      Author: Arne LÃ¼dtke
      Gibt den Typen zurÃ¼ck, der bei einem match im Unify verwendet werden soll. Wird Ã¼ber IMatchable implementiert.
      Specified by:
        `getMatchType` in interface `IMatchable`

    - #### printJavaCode

          public JavaCodeResult printJavaCode(ResultSet resultSet)

      Overrides:
        `printJavaCode` in class `Type`

    - #### applyResultSet

          public Type applyResultSet(ResultSet result)

      Overrides:
        `applyResultSet` in class `Type`

    - #### getSuperWildcardTypes

          public java.util.ArrayList<SuperWildcardType> getSuperWildcardTypes()

      Liefert alle SuperWildcardTypes, die in diesem Typ enthalten sind. Dabei werden auch die parameter auf SuperWildcardTypes durchsucht.
      Overrides:
        `getSuperWildcardTypes` in class `Type`
      Returns:

    - #### 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:

    - #### getInvolvedTypePlaceholder

          public Menge<TypePlaceholder> getInvolvedTypePlaceholder()

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

    - #### 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; }

    - #### getChildren

          public Menge<SyntaxTreeNode> getChildren()

      Overrides:
        `getChildren` in class `Type`

    - #### checkTYPE

          public Type checkTYPE(TypeAssumptions ass,
                                SyntaxTreeNode method)

      Overrides:
        `checkTYPE` in class `Type`

    - #### parserPostProcessing

          public void parserPostProcessing(SyntaxTreeNode parent)

      Description copied from class: `SyntaxTreeNode`
      Wird nach dem Parsen aufgerufen. ErfÃ¼llt folgenden Aufgaben: 1. FÃ¼llt fehlende Typangaben mit TPHs auf. 2. VerknÃ¼pft die Knoten des Syntaxbaums. (setzt Parent) 3. Wechselt RefTypes gegebenenfalls mit GenericTypeVars aus. 4. FÃ¼hrt einen Teil des Syntaxckecks durch.
      Overrides:
        `parserPostProcessing` in class `SyntaxTreeNode`