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