Container und Parameter |
Top Previous Next |
Beispiele > Unit_Abhängigkeit > Container und Parameter
Zunächst müssen dem Programm die Verzeichnisse angegeben werden, in denen nach den Units zu suchen ist. Dazu wird auf der Seite für die Klassenelemente ein Vector-Container definiert
vstr m_vIncludeDirs
Die Verzeichnisse muss der Benutzer angeben, bevor er das Programm startet. Z.B.:
m_vIncludeDirs.push_back("C:\\Programme\\Borland\\BDS\\4.0\\source\\Win32");
Die gesuchten Dateien müssen irgendwo gemerkt werden. Dazu wird ein mstrstr Container definiert:
mstrstr m_mUnitPaths
In dieser Map kann zu jedem Namen einer Unit als Schlüssel der zugehörige Pfad als Wert gespeichert werden. Über den Schlüssel kann dann später leicht festgestellt werden, ob nach der Unit bereits gesucht wurde, falls sie in einer anderen Unit erneut aufgelistet ist.
if(!m_mUnitPaths.containsKey(sInclude) ...
Auch der Fall, dass der Pfad zu einer Unit nicht gefunden wird, muss gemerkt werden, um nicht erneut nach ihr zu suchen. Deshalb gibt es eine zweite Map:
mstrnode m_mNotFoundUnits
Hier ist als Container-Typ mstrnode gewählt. Im node-Wert können gleich zwei Strings gespeichert werden, die von Interesse sein könnten: die Unit, in der die nicht gefundenen Datei aufgeführt ist und ein Level-Parameter, der Auskunft darüber gibt, wieviele Dateien geöffnet werden müssen, um von der ursprünglichen Quell-Datei zur ersteren Unit zu kommen.
Damit diese beiden Informationen erreichbar sind, müssen die oben genannten Produktionen mit entsprechenden Parametern versehen werden.
int xiLevel, const str& xsLookedUpWhere
Die erste unit-Produktion wird dann mit den aktuellen Werten in der Startregel aufgerufen:
unit_dependence ::= {{ str sWhereFound = basename(SourceName()); }} unit[0, sWhereFound]
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |