Topic : Dokumentation zum Library-Maker Author : Karsten Lüdersen @ HH Version : MKlib.hyp 2.49 Subject : Programmieren/Basic Nodes : 162 Index Size : 5558 HCP-Version : 4 Compiled on : Atari @charset : atarist @lang : @default : @help : Hilfe @options : +g -i +y +z -t4 -d24 @width : 75 View Ref-FileTechnische Realisierung library-lokaler Bezeichner Library-Maker Bei der Erzeugung einer Library sucht der Library-Maker nach dem Laden der Quelldatei zunächst in der Variablennamentabelle nach dem Namen "EXPORTED_SYMBOLS". Wird er fündig und handelt es sich bei dem gefundenen auch um eine Prozedur merkt er sich den Variablenpointer auf diesen Namen und sucht den gesamten Quelltext nach einer Prozedurdefinition mit diesem Variablenpointer ab. Diesen Startpunkt merkt er sich ebenfalls und ab dieser Stelle im Programmcode liest der Library-Maker alle Variablenpointer (unter Berücksichtigung der LOCAL-Deklaration) bis er auf ein END_PROC trifft und legt darüber eine Tabelle an. Das Ende der Prozedur merkt er sich auch. Anschließend tut der Library-Maker das, was er schon immer vor der Übersetzung des Codes gemacht hat: er überträgt die Bezeichnernamen in die zukünftige Library. Hier setzt er jetzt vor sämtliche Bezeichner, die er in seiner Exporttabelle nicht finden kann, den Namen der Library und einen Unterstrich. Alle anderen Bezeichner überträgt er unverändert. Obwohl die Methode so einfach ist, handelt es sich wirklich um library-lokale Variablen und nicht um Schummelei: Sie sind von außerhalb nicht aufrufbar. Auch nicht mit dem Wissen um dieses Verfahren. Das liegt daran, daß der Library-Maker kleine Buchstaben für den "Vornamen" verwendet. Ansonsten liegen alle Bezeichnernamen nur in Großbuchstaben vor. Sie werden nur vom Editor anders angezeigt. Mit dem Editor ist es nicht möglich, Bezeichnernamen mit kleinen Buchstaben zu erzeugen. Deshalb ist absolut sichergestellt, daß diese Bezeichner nicht von außerhalb versehentlich (oder mit Absicht ;-)) aufgerufen werden. Trotz dieses Vorgehens sind die Libraries nicht nur für die aktuelle Version, sondern auch für ältere Versionen ohne Probleme interpretierbar. Angezeigt werden Libraries ja nicht... ;-)