Transformationen
Transformationsbeschreibung (XML Datei)
Die Konfigurationsdatei beschreibt (in XML) die Transformation der Template-Dateien in den Projektordner. Im Normalfall wird es sich hier um .cpp / .h sowie ggf. Projektdateien handeln – es können aber alle Arten von Dateien behandelt werden.
Der Wurzelknoten ist ein Element <ProjectFileGeneratorConfig>. Direkt an diesem Knoten kann das Attribute useProjectInterface=“true“ gesetzt werden. Es setzt den Processing Vorgang in den Modus Visual-Studio Projekte zu erzeugen (im Gegensatz zu TC-C++-Modulen).
Hier folgen mehrere <FileDescription>-Elemente, die jeweils die Transformation einer Datei beschreiben. Nach diesen Elementen besteht die Möglichkeit, in einem Element <Symbols> Symbole, die zur Transformation bereitstehen, zu definieren.
Transformation der Template-Dateien
Ein Element <FileDescription> ist folgendermaßen aufgebaut:
<FileDescription openFile="true">
<SourceFile>FileInTemplatesDirectory.cpp</SourceFile>
<TargetFile>[!output SYMBOLNAME].cpp</TargetFile>
<Filter>Source Files</Filter>
</FileDescription>
- Die Quelldatei aus dem Templates-Verzeichnis wird als <SourceFile> angegeben.
- Die Zieldatei im Projekt-Verzeichnis wird als <TargetFile> angegeben. Dabei wird normalerweise ein Symbol mittels des Kommandos [!output …] genutzt werden.
- Mit dem Attribut „copyOnly“ kann angegeben werden, ob die Datei transformiert werden soll, d. h. dass die in der Quelldatei beschriebenen Transformationen ausgeführt werden. Ansonsten wird die Datei lediglich kopiert.
- Mit dem Attribut „openFile“ kann angegeben werden, ob die Datei nach dem Erstellen des Projektes in Visual Studio geöffnet werden soll.
- Filter: Es wird im Projekt ein Filter angelegt.
Hierfür muss am <ProjectFileGeneratorConfig> das Attribute useProjectInterface=”true” gesetzt werden.
Transformationsanweisungen
In den Template-Dateien werden Kommandos genutzt, welche die Transformationen selber beschreiben.
Folgende Kommandos stehen bereit:
[!output SYMBOLNAME]
Dieses Kommando ersetzt das Kommando durch den Wert (Value) des Symbols. Eine Reihe von vordefinierten Symbolen steht bereit.[!if SYMBOLNAME], [!else]
und[!endif]
beschreiben eine Möglichkeit, entsprechenden Text bei der Transformation nur in bestimmten Situationen einzubinden.
Symbolnamen
Symbolnamen können auf 3 Arten für die Transformationsanweisungen bereitgestellt werden.
Diese werden von den zuvor beschriebenen Kommandos verwendet, um Ersetzungen vorzunehmen.
- Eine Reihe von vordefinierten Symbolen direkt in der Konfigurationsdatei:
In der XML-Datei ist eine Liste von <Symbols> vorgesehen. Hier können Symbole definiert werden:<Symbols>
<Symbol>
<Name>CustomerSymbol</Name>
<Value>CustomerString</Value>
</Symbol>
</Symbols> - Die generierten Zieldateinamen können durch Hinzufügen des „symbolName“-Attributes bereitgestellt werden:
<TargetFile symbolName="CustomerFileName">[!output SYMBOLNAME].txt</TargetFile>
- Wichtige Symbole werden vom System selber bereitgestellt
Symbol Name (Projekte) | Beschreibung |
PROJECT_NAME | Der Projektname aus dem Visual Studio Dialog. |
PROJECT_NAME_UPPERCASE | Der Projektname in Großbuchstaben. |
WIN32_WINNT | 0x0400 |
DRVID | Driver ID im Format: 0x03010000 |
PLATFORM_TOOLSET | Toolset version, z. B. v100 |
PLATFORM_TOOLSET_ELEMENT | Toolset version als XML Element, z. B. <PlatformToolset>v100</PlatformToolset> |
NEW_GUID_REGISTRY_FORMAT | Erstellt eine neue GUID im Format: |
Symbol Name (Klassen) | Beschreibung |
PROJECT_NAME | Der Projektname aus dem Visual Studio Dialog. |
HEADER_FILE_NAME | Wird durch den Nutzer im Wizard-Dialog eingegeben. |
SOURCE_FILE_NAME | Wird durch den Nutzer im Wizard-Dialog eingegeben. |
CLASS_NAME | Wird durch den Nutzer im Wizard-Dialog eingegeben. |
CLASS_SHORT_NAME | Wird durch den Nutzer im Wizard-Dialog eingegeben. |
CLASS_ID | Eine neue durch den Wizard erstellte GUID. |
GROUP_NAME | C++ |
TMC_FILE_NAME | Wird genutzt, um das TMC File zu identifizieren. |
NEW_GUID_REGISTRY_FORMAT | Erstellt eine neue GUID im Format: |