Zum Inhalt springen

Blitz2D: Types

Aus Wikibooks

Navigation: BlitzBasic >>> Blitz2D >>> Inhaltsübersicht >>> Grundwissen

Types sind benutzerdefinierte Objekte, die in Type-Listen verwaltet werden. Jedes Type-Objekt muss mit einem eindeutigen Namen definiert werden. Alle Types des gleichen Namens werden in einer globalen Liste verwaltet, auf die nicht direkt sondern nur mit Typezeiger-Variablen unter Verwendung von Type-Operatoren oder Type-Anweisungen zugegriffen werden kann.

Type-Definition

[Bearbeiten]

Die Definition eines Type-Objekts beginnt mit der Anweisung Type <typename> und endet mit End Type. Zwischen diesen Anweisungen dürfen nur Field-Anweisungen oder Kommentare stehen. Mit jeder Field-Anweisung kann eine, oder mehrere durch Komma getrennte Variablen für das Type-Objekt definiert werden, die dadurch in jedem zu dem Typenamen erstellten Objekt vorkommen.

Zu jedem Typenamen darf nur ein Objekt definiert werden.

Typezeiger-Variablen

[Bearbeiten]

Mit <Gültigkeitsbereich> <Identifer>.<Typename> wird eine Typezeiger-Variable definiert. Wie auch bei anderen Variablen braucht man „.<Typename>“ nur bei der ersten Verwendung (bei der Definition) anhängen und Typezeiger können sowohl global als auch lokal definiert werden. Durch Anhängen von „.<Typename>“ an Funktionsnamen bei einer Funktions-Definition wird der Rückgabetyp der Funktion als Typezeiger definiert.

Nach der Definition zeigt eine Typezeiger-Variable noch auf kein Objekt, sondern enthält ihren Defaultwert „Null“, der einem ungültigen Objekt entspricht. Der Variablen muss erst mit einem Type-Operator ein Objekt zugewiesen werden. Danach kann man mit <Typezeiger>\<Fieldname> auf die einzelnen Felder des Objekts zugreifen.

Type-Operatoren

[Bearbeiten]
Hinweis

In manchen Foren wurde behauptet, die First, Last, New, Each, Before und After wären Sonderfunktionen, deren Besonderheit darin bestünde, dass sie ohne Einklammerung verwendet werden. Das ist falsch! In der Blitzinternen Hilfe werden diese Operatoren als unäre Operatoren und nicht als Funktionen bezeichnet. Da der Operand eines unären Operators nicht eingeklammert wird, ist daran also auch nichts Besonderes.

Alle Type-Operatoren ermitteln einen Zeiger auf ein Type-Objekt, der entweder als Operand eines Typeobjekt-Operators verwendet, oder in einer Typezeiger-Variablen gespeichert werden kann, die für die gleiche Type-Definition definiert wurde. Wenn kein entsprechendes Objekt gefunden wird, wird Null zurück gegeben, was es ungültiges Objekt ist.

Typelisten-Operatoren

[Bearbeiten]
Typelisten-Operatoren erfordern als Operand den Namen einer Type-Definition.
Operator Typ Beschreibung
First (unär) gibt eine Zeiger auf das erste Objekt einer Typeliste zurück. (oder Null, wenn die Typeliste leer ist)
Last (unär) gibt eine Zeiger auf das letzte Objekt einer Typeliste zurück. (oder Null, wenn die Typeliste leer ist)
New (unär) erstellt ein neues Objekt am Ende der Liste und gibt einen Zeiger darauf zurück.
Each (unär) gibt nacheinander jedes Objekt einer Typeliste zurück. (kann mit keinem anderen Operator verknüpft werden)

Typeobjekt-Operatoren

[Bearbeiten]
Typeobjekt-Operatoren erfordern als Operand eine Typezeiger-Variable, oder eine Verknüpfung mit einem Type-Operator.
Operator Typ Beschreibung
Before (unär) gibt eine Zeiger auf das Vorgänger-Objekt eines Typeobjekts zurück. (oder Null, wenn das Operand-Objekt das erste Objekt der Typeliste ist)
After (unär) gibt eine Zeiger auf das Nachfolger-Objekt einer Typeliste zurück. (oder Null, wenn das Operand-Objekt das letzte Objekt der Typeliste ist)

Type-Anweisungen

[Bearbeiten]
Insert
Delete