Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03316.jsonl.gz/2111

Schnittstellen von Libraries sind dabei in zwei Definitionsmoduln folgender Namensgebung zu finden:
In beiden Moduln sind alle Objekte bis zur aktuellen Version 37 deklariert, ab Version 36, der Entwickler-Version, jedoch besonders gekennzeichnet.
Damit lässt sich die bisherige umständliche Verwendung von Schnittstellenmoduln verschiedener Library-Versionen, also beispielsweise Intuition, Intuition34, Intuition36 und so fort, vermeiden.
Allerdings wird die bisherige Anforderung an die vorhandene Mindest-Version einer Library fallengelassen. Der Programmierer ist nun selbst verantwortlich, die Version und den damit vorhandenen Prozeduren-Umfang zu prüfen!
Dafür existiert in jedem Schnittstellenmodul mit den Library-Routinen eine Variable mit dem Namen libraryVersion, mit dem vollem Namen also IntuitionL.intuitionVersion. Diese enthält die Versionsnummer der geöffneten Library. Nach Abfrage dieser Versionsnummer hat der Programmierer folgende Reaktionsmöglichkeiten:
Dies ist das ähnliche Verhalten wie bei optionalen Libraries, die ebenfalls durch Mehraufwand des Programmierers abgefangen werden können, und das fertige Programm unabhängig der vorhanden Libraries ablauffähig erhält.
Dieses Abprüfen widerspricht etwas der -Philosophie, erleichtert aber die flexible Programmierung ungemein. Ein Beispiel dafür findet sich im Modul WbClone auf der Demo-Diskette.
Für Libraries, die erst ab Version 36 existieren, gibt es ein zusätzliches, drittes Modul OptlibraryL, beispielsweise OptWorkbenchL, das eine optionale Library ohne Implementation darstellt (siehe 5.1.13). Beim Import solcher Moduln ist das Programm auch ohne diese Library lauffähig, allerdings muss vor Benutzung der Prozeduren die libraryBase auf Ungleichheit mit NIL prüfen.
Jede Library ist also durch die soeben beschriebenen Moduln zu verwenden. Eine feinere Unterteilung -- in der Programmiersprache C sind Library-Schnittstellen durch mehrere Header-Dateien beschrieben -- existiert nicht.
Ausserdem existieren implementationlose Moduln, die nur Typen- und Konstantendeklarationen enthalten. Dazu gehören beispielsweise alle Device-Schnittstellen.
Im Gegensatz zu früheren Versionen verzichten wir von nun an, alle Definitionen der Schnittstellenmoduln abzudrucken. Hauptargument dafür ist der mögliche Einsatz von M2Ohm, das dem Programmierer jederzeit die nötige Information sehr schnell verschafft.
Durch die einfache Handhabung von M2Ohm (siehe ) finden wir es nicht mehr angebracht, alle Definitionen abzudrucken. Diese haben in der Zwischenzeit einen riesigen Umfang erreicht. Ausserdem wird meistens nur gerade eine Definition bzw. ein Eintrag nachgeschaut. Und gerade dann ist ein Werkzeug wie M2Ohm schneller und einfacher als ein endloses Blättern in Handbüchern.