Guard

Top  Previous  Next

Beispiele > Guard

 

Die wichtigsten Bedienungselemente von TETRA sollten bekannt sein.

 

Hier soll vor allem die Verwendung von Unterausdrücken regulärer Ausdrücke demonstriert werden.

Dies Beispiel ist vor allem für C++-Programmierer interessant, aber auch ohne den inhaltlichen Zweck des Programms zu verstehen sind die verwendeten Methoden für Nicht-Programmierer lehrreich.

 

 

Problemstellung:

 

In einen C++-Quelltext sollen an den Ein- und Austrittspositionen von Klassenmethoden - d.h. nach der öffnenden und vor der schließenden Klammer des Funktionskörpers -  zusätzliche Befehle eingefügt werden, die dem Auffinden oder Vermeiden von Fehlern oder dem Messen der Geschwindigkeit der Funktionen dienen können. Dazu soll den eingefügten Befehlen der Name der Klasse und der Name der Methode als Parameter übergeben werden.

Wird beispielsweise im Quelltext eine Methode definiert:

 

void CClass::Name ( int xi )

{

  ...

}

 

soll im Zieltext stehen:

 

void CClass::Name ( int xi )

{

   CGuard G("CClass", "Name");

  ...

   G.stop();

}

 

Die Klasse CGuard ("guard" ist das englische Wort für "Wächter") kann im Konstruktor bestimmte Ressourcen blockieren oder eine Zeitmessung anstoßen und im Destruktor die Ressource wieder freigeben bzw. die Zeit stoppen.

Eine weiter Möglichkeit wäre eine Transformation obiger Methoden zu:

 

void CClass::Name ( int xi )

{

   try

   {

      ...

   }

   catch(...)

   {

        throw CException("CClass::Name");

   }

}

 

 

TETRA Programm:

 

Das Beispiel guard befindet sich in:

 

       \TextTransformer\Beispiele\Guard\guard.ttp

 

Das TETRA-Programm dieses Beispiels dient nur Demonstrationszwecken. Es ist nicht garantiert, dass damit jede C++-Source-Datei zu transformieren wäre. Immerhin soll es den Code verarbeiten können, den TETRA selbst erzeugt. Als Beispielstext dienen daher Parser, die vom TextTransformer generiert wurde:

 

       \TextTransformer\Beipiele\Guard\rechnerparser.cpp

       \TextTransformer\Beipiele\Guard\guardparser.cpp

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English