•  Back 
  •  Inhalt 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Hilfe 
  •  Show info about hypertext 
  •  View a new file 
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... ;-)