Bonjour à tous,

Je souhaiterais sérialiser un fichier issu de Papyrus (.uml) en code C++ grâce à Acceleo.

J'ai créé un template que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment encoding = UTF-8 /]
[module le_projet('http://www.eclipse.org/uml2/4.0.0/UML')]
 
[template public le_projet(aClass : Class)]
[comment @main /]
 [file (aClass.name.concat('.cpp'), false)]
   public class [aClass.name.toUpperFirst()/] {
   [for (p: Property | aClass.attribute) separator('\n')]
     private [p.type.name/] [p.name/];
   [/for]
 
   [for (p: Property | aClass.attribute) separator('\n')]
     public [p.type.name/] get[p.name.toUpperFirst()/]() {
       return this.[p.name/];
     }
   [/for]
 
   [for (o: Operation | aClass.ownedOperation) separator('\n')]
     public [o.type.name/] [o.name/]([for(p:Parameter | o.ownedParameter)separator(',')] [p.type.name/] [p.name/] [/for]) {
       // TODO should be implemented
     }
   [/for]
   }
 [/file]
 [/template]
C'est censé gérer les classes, leurs attributs et méthodes.
Appliqué à cette classe...
Nom : extrait_diagramme_classe_mdrl.jpg
Affichages : 932
Taille : 10,7 Ko
cela donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
   public class Recherche_de_fichier {
 
     public String recherche_fichier_dans_arbo( String Nom_fichier ) {
       // TODO should be implemented
     }
 
     public String Essai( String Essai_sortie , Bool Essai1 , String Essai2 ) {
       // TODO should be implemented
     }
   }
Pas si mal, mais il y a un problème puisque le paramètre de retour se retrouve également dans les paramètres d'entrée de la méthode!

J'ai bien trouvé une opération s'appelant in_and_out(EDiagnosticChain,EMap) : Boolean mais je ne sais pas du tout m'en servir et de plus, je ne suis pas sûr qu'elle résoudrait mon problème.

Quelqu'un saurait-il m'indiquer comment faire pour résoudre ce problème ?

Je débute dans ce domaine et j'ai quelques difficultés à obtenir de la documentation sur cette fonction.

D'avance, merci pour vos conseils / idées.