Réserver une Démo
Pré. Proc.

Macros de fonctions

Les macros de fonction sont un moyen pratique de manipuler et de formater divers éléments de données. Chaque macro de fonction renvoie une string de résultat. Il existe deux manières principales d'utiliser les résultats des macros de fonction :

  • Substitution directe de la string renvoyée dans la sortie, par exemple : %TO_LOWER(attName)%
  • Stockage de la string renvoyée dans le cadre d'une définition de variable telle que : $name = %TO_LOWER(attName)%
Les macros de fonction peuvent prendre des paramètres, qui peuvent être transmis aux macros comme suit :
  • Littéraux String , placés entre guillemets doubles
  • Macros de substitution directe sans les signes de pourcentage qui les entourent
  • Références variables
  • Littéraux numériques
Plusieurs paramètres sont transmis à l'aide d'une liste séparée par des virgules.

Les macros de fonction sont nommées selon le style Tout en majuscules, comme dans :

%CONVERT_SCOPE(opScope)%

Les macros de fonctions disponibles sont décrites ici. Les paramètres sont indiqués par des crochets, comme dans :

FONCTION_NOM([param]).

CONVERTIR_SCOPE([umlScope])

À utiliser avec les langues prises en charge pour convertir [umlScope] en mot-clé de portée approprié pour la langue en cours de génération. Ce tableau montre la conversion de [umlScope] par rapport à la langue donnée.

Langue

Conversions

C++

Paquetage ==> public

Public ==> public

Privé ==> privé

Protégé ==> protégé

C#

Paquetage ==> interne

Public ==> public

Privé ==> privé

Protégé ==> protégé

Delphes

Paquetage ==> protégé

Public ==> public

Privé ==> privé

Protégé ==> protégé

Java

Paquetage ==> {vide}

Public ==> public

Privé ==> privé

Protégé ==> protégé

PHP

Paquetage ==> public

Public ==> public

Privé ==> privé

Protégé ==> protégé

VB

Paquetage ==> Protégé

Public ==> Public

Privé ==> Privé

Protégé ==> Protégé

VB .Net

Paquetage ==> Ami

Public ==> Public

Privé ==> Privé

Protégé ==> Protégé

COLLECTION_CLASS([langue])

Donne la classe de collection appropriée pour la langue spécifiée pour l'attribut lié actuel.

CSTYLE_COMMENT([longueur_enveloppe])

Convertit les notes de l'élément actuellement dans la portée en commentaires simples de style C, en utilisant /* et */.

DELPHI_PROPERTIES([portée], [separator] , [retrait])

Génère une propriété Delphi.

DELPHI_COMMENT([wrap_length])

Convertit les notes de l'élément actuellement concerné en commentaires Delphi.

EXEC_ADD_IN(, [nom_fonction],, ...,)

Appelle une fonction Add-In Enterprise Architect , qui peut renvoyer une string de résultat.

[addin_name] et [function_name] spécifient les noms du Add-In et de la fonction à appeler.

Les paramètres de la fonction Add-In peuvent être spécifiés via les paramètres [prm_1] à [prm_n].

$result = %EXEC_ADD_IN("MonAddin", "ProcessOperation", classGUID, opGUID)%

Toute fonction appelée par la macro EXEC_ADD_IN doit avoir deux paramètres : un object EA.Repository et un tableau Variant contenant tous les paramètres supplémentaires de l'appel EXEC_ADD_IN. Le type de retour doit être Variant.

Fonction publique ProcessOperation( Référentiel As EA.Repository , args As Variant) As Variant

RECHERCHER([src], [sous-chaîne])

Position de la première instance de [subString] dans [src] ; -1 si aucune.

OBTENIR_ALIGNEMENT()

Renvoie une string dans laquelle tout le texte de la ligne de sortie actuelle est converti en espaces et tabulations.

JAVADOC_COMMENT([wrap_length])

Convertit les notes de l'élément actuellement dans la portée en commentaires de style javadoc.

GAUCHE([src], [compte])

Les [count] premiers caractères de [src].

LONGUEUR([src])

Longueur de [src]. Renvoie une string .

MATH_ADD(x,y) MATH_MULT(x,y) et MATH_SUB(x,y)

Dans un gabarit de code ou gabarit DDL, ces trois macros exécutent respectivement les fonctions mathématiques de :

  • Addition (x+y)
  • Multiplication (x*y) et
  • Soustraction (xy)
Les arguments x et y peuvent être des entiers ou des variables, ou une combinaison des deux. Considérez ces exemples, tels qu'ils sont utilisés dans un gabarit « Class » pour la génération de code C++ :
  • $a = %MATH_ADD(3,4)%
  • $b = %MATH_SUB(10,3)%
  • $c = %MATH_MULT(2,3)%
  • $d = %MATH_ADD($a,$b)%
  • $e = %MATH_SUB($b,$c)%
  • $f = %MATH_MULT($a,$b)%
  • $g = %MATH_MULT($a,10)%
  • $h = %MATH_MULT(10,$b)%
Ceux-ci calculent, dans la même séquence, à :
  • a = 3 + 4 = $a
  • b = 10 - 3 = $b
  • c = 2 * 3 = $c
  • d = a + b = $d
  • e = b - c = $e
  • f = a * b = $f
  • g = a * 10 = $g
  • h = 10 * b = $h
Lorsque le code est généré, le fichier .h (pour C++) contient ces chaînes correspondantes :
  • a = 3 + 4 = 7
  • b = 10 - 3 = 7
  • c = 2 * 3 = 6
  • d = a + b = 14
  • e = b - c = 1
  • f = a * b = 49
  • g = a * 10 = 70
  • h = 10 * b = 70

MID([src], [début]) MID([src], [début], [nombre])

Sous-chaîne de [src] commençant à [start] et incluant [count] caractères. Lorsque [count] est omis, le reste de la string est inclus.

PI([option], [ valeur ], {[option], [ valeur ]})

Ensembles le PI pour le gabarit actuel à [ valeur ]. Les valeurs valides pour [ valeur ] sont :

  • " \n"
  • " "
  • « «
  • « »
<option> contrôle le moment où le nouveau PI prend effet. Les valeurs valides pour <option> sont :
  • I, Immédiat : le nouveau PI est généré avant la prochaine ligne gabarit non vide
  • N, Suivant : le nouveau PI est généré après la prochaine ligne gabarit non vide
Plusieurs paires d'options sont autorisées dans un appel. Un exemple de situation où cette fonction serait utilisée est celle où un mot clé est toujours sur une nouvelle ligne, comme illustré ici :

%PI=" "%

%classAbstract ? "abstrait"%

%si classTag:"macro" != " "%

%PI("Je", " \n", "N", " " )%

%classTag:"macro"%

%finSi%

classe

%Nom de classe%

Pour plus de détails, voir la macro Instruction de traitement (PI) .

PROCESS_END_OBJECT([nom_modèle])

Permet aux classes qui sont une classe plus éloignée de la classe de base, d'être transformées en objets (tels que des attributs, des opérations, Paquetages , des paramètres et des colonnes) de la classe de base. [template_name] fait référence au gabarit de travail qui stocke temporairement les données.

SUPPRIMER LES DUPLICATS([source], [separator] )

Où [source] est une liste séparée par [separator] ; cela supprime toutes les chaînes en double ou vides.

REMPLACER([ string ], [ancien], [nouveau])

Remplace toutes les occurrences de [old] par [new] dans la string donnée <string>.

RESOLVE_OP_NAME()

Résout les conflits dans les noms d'interface lorsque deux interfaces de méthode ont le même nom.

RESOLVE_QUALIFIED_TYPE() RESOLVE_QUALIFIED_TYPE( [separator] ) RESOLVE_QUALIFIED_TYPE( [separator] , [par défaut])

Génère un type qualifié pour l'attribut actuel, l'attribut lié, le parent lié, l'opération ou le paramètre. Permet la spécification d'un séparateur autre que. et une valeur par défaut lorsque certaines valeur sont requises.

DROITE([src], [compte])

Les [count] derniers caractères de [src].

TO_LOWER([ string ])

Convertit [ string ] en minuscules.

TO_UPPER([ string ])

Convertit [ string ] en majuscules.

TRIM([ string ]) TRIM([ string ], [trimChars])

Supprime les espaces blancs de début et de fin de [ string ]. Si [trimChars] est spécifié, tous les caractères de début et de fin de l'ensemble de <trimChars> sont supprimés.

TRIM_LEFT([ string ]) TRIM_LEFT([ string ], [trimChars])

Supprime les caractères de début spécifiés de <string>.

TRIM_RIGHT([ string ]) TRIM_RIGHT([ string ], [trimChars])

Supprime les caractères de fin spécifiés de <string>.

VB_COMMENT([longueur_d'enveloppement])

Convertit les notes de l'élément actuellement dans la portée en commentaires de style Visual Basic.

WRAP_COMMENT([commentaire], [wrap_length], [indent], [start_string])

Encapsule le texte [commentaire] à une largeur [wrap_length] en plaçant [indent] et [start_string] au début de chaque ligne.

$comportement = %WRAP_COMMENT(opBehavior, "40", " " , " // " )%

<wrap_length> doit toujours être passé sous forme de string , même si WRAP_COMMENT traite ce paramètre comme un integer .

WRAP_LINES([texte], [longueur_enveloppe], [chaîne_début] {, [chaîne_fin] })

Encapsule [texte] comme indiqué pour être [wrap_length], en ajoutant [start_string] au début de chaque ligne et [end_string] à la fin de la ligne si cela est spécifié.

XML_COMMENT([wrap_length])

Convertit les notes de l'élément actuellement concerné en commentaires de style XML.

Apprenez Plus