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
`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
`` `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
`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`