Chapter 9 Guide de référence de la génération (GTL)
Un membre d'objet peut être un attribut volatile, une propriété standard, un template ou un attribut étendu. Il peut y avoir trois types de propriété standard : boolean, string ou object. La valeur d'une propriété standard peut être :
La valeur d'un template est le résultat de sa conversion (remarquez qu'un template peut être défini par rapport à lui-même, c'est-à-dire de façon récursive).
La valeur d'un attribut étendu peut également être un template, auquel cas elle est convertie. Ceci permet de définir les templates sur une base objet (instance) plutôt que sur une base métaclasse.
Pour éviter les conflits de nom lorsque l'évaluation d'un template s'étend sur plusieurs cibles, il est possible de préfixer à la fois les attributs étendus et les templates par le code de leur cible parent. Par exemple : %Java::strictfp%
ou %C++::definition%
Les noms de template peuvent également être préfixés par le nom de leur métaclasse parent. Ceci vous permet d'invoquer un template redéfini, en contournant de fait le mécanisme de résolution de template dynamique. Par exemple : %Classifier::definition%
Vous avez également la possibilité de spécifier une liste de paramètres. Les valeurs de paramètre ne doivent pas contenir de caractères % et être séparées par des virgules. Les paramètres sont transmis sous forme de variables locales @1, @2, @3... définies dans la portée de la conversion du template.
Si le template MyTemplate est défini de la façon suivante :
Parameter1 = %@1%
Parameter2 = %@2%
L'évaluation de %MyTemplate(MyParam1, MyParam2)% va produire :
Parameter1 = MyParam1
Parameter2 = MyParam2
Les attributs volatiles peuvent être définis via les macros .set_object et .set_value.
Si la portée est une portée d'objet, un attribut volatile est défini. Cet attribut sera disponible sur l'objet correspondant et ce, quelle que soit la hiérarchie de la portée. Les attributs volatiles masquent les attributs standard. Une fois définis, ils restent disponibles jusqu'à la fin du processus de génération courant.
Le mot clé "this" renvoie une portée d'objet et permet de définir des attributs volatiles sur l'objet qui est actif dans la portée courante.
Si la portée est une portée de template , une variable locale standard est définie.
Exemples :
.set_value(this.key, %Code%-%ObjectID%)
Définit l'attribut volatile key sur l'objet courant
eg. .set_object(this.baseClass, ChildGeneralizations.First.ParentObject)
Définit l'attribut volatile baseClass de type d'objet sur l'objet courant.
Copyright (C) 2005. Sybase Inc. All rights reserved. |
![]() |