Chapter 9 Guide de référence de la génération (GTL)


Portée de la conversion

Les templates sont instanciés via un processus appelé conversion. La conversion est effectuée dans une portée définie et consiste à remplacer les variables par leurs valeurs correspondantes dans le cadre défini par la portée Tous les templates sont définis par rapport aux classes du métamodèle, ils sont considérés comme des propriétés d'un type particulier qui utilisent le résultat de leur conversion comme valeur.

Une portée est un contexte pour l'évaluation d'un template, il inclut l'objet actif et les variables locales. A un point donné de la conversion, un seul objet est actif ; il s'agit de l'objet auquel le template est appliqué. Au sein d'une portée de conversion, tous les attributs et collections de métamodèle définis dans la métaclasse de l'objet actif et ses parents sont visibles, de même que les attributs étendus et templates correspondants. Lorsque le moteur de conversion commence à évaluer un template, une nouvelle portée de conversion est créée.

Pour plus d'informations sur les collections d'objets, reportez-vous au chapitre "Fichiers de ressources et métamodèle public PowerAMC".

Lorsqu'une portée est créée il s'agit de la portée de la conversion courante, l'ancienne portée de conversion constituant la portée externe de la portée de conversion courante

Lorsqu'une portée est quittée sa portée externe est restaurée comme étant la portée de conversion courante


Pour plus d'informations sur la portée externe, reportez-vous à la section "Variables".

De nouvelles portées peuvent être créées lors de l'évaluation d'un template qui force l'objet à changer. Par exemple, la macro foreach_item , qui permet l'itération sur les collections définit une nouvelle portée, de même que la macro foreach_line . La portée externe est restaurée à la fin du bloc.

Pour plus d'informations sur ces deux macros, reportez-vous aux sections "Macro .foreach_item" et "Macro .foreach_line".

Les portées imbriquées forment une hiérarchie qui peut être affichée sous la forme d'une arborescence, la portée de plus haut niveau étant la racine.

Exemple

L'exemple suivant montre le mécanisme de la portée à l'aide d'un template de classe :


 


Copyright (C) 2007. Sybase Inc. All rights reserved.