next up previous
Nächste Seite: CODE Aufwärts: Externe Prozeduren, Libraries Vorherige Seite: Externe Prozeduren


Libraries

Eine besondere Syntax in Definitionsmoduln erlaubt es, für die Amiga-Bibliotheken (z.B. icon.library) Schnittstellen-Moduln zu schreiben, die dem Compiler ermöglichen, direkt den Aufrufcode für die Prozeduren zu generieren. Die Bibliothek wird vom Programm dann auch automatisch geöffnet und bei Programmende wieder geschlossen. Um ein Schnittstellen-Modul zu definieren, müssen nach dem Modulnamen sowohl der Name der Bibliothek sowie die verlangte Versionsnummer in geschweiften Klammern angegeben werden.


\begin{example}
\begin{quote}\tt DEFINITION MODULE IconL{\dq icon.library\dq,33};
\end{quote}\end{example}

Zu einem Schnittstellen-Modul muss kein Implementationsmodul geschrieben werden, die Objekt-Datei wird vom Compiler automatisch beim Übersetzen des Definitionsmoduls erzeugt.

Da die Bibliotheken automatisch geöffnet werden, ist es im Gegensatz zu C-Programmen nicht nötig, für die Bibliotheksadresse eine Variable zu deklarieren. Manchmal benötigt man aber doch die Adresse der Bibliothek, beispielsweise, um auf die IntuitionBase zugreifen zu können. Dies kann mit der Funktion SYSTEM.ADR geschehen. Dazu importiert man das Modul unqualifiziert und verwendet als Parameter von ADR den Modulnamen.


\begin{example}
\begin{verbatim}...
IMPORT IntuitionL;
VAR
intuiBase: IntuitionBasePtr;
BEGIN
intuiBase:=ADR(IntuitionL);\end{verbatim}\end{example}

In Library-Moduln können keine oder genau folgende Variablen deklariert werden:

libraryVersion: INTEGER
libraryBase: POINTER TO ??
Diese werden vom automatisch erzeugten Code gesetzt und können jederzeit abgefragt werden. Somit ist ein Aufruf von ADR(library) eigentlich unnötig.


next up previous
Nächste Seite: CODE Aufwärts: Externe Prozeduren, Libraries Vorherige Seite: Externe Prozeduren
Claudio Nieder 2000-11-12