artefacts multi-classe

Please use this forum to signal bugs.
Merci d'utiliser ce forum pour signaler des bugs.

artefacts multi-classe

Postby Teaniel » Wed 3 Jul 2013 16:43

Bonjour,

Une petite anomalie au niveau de la génération :
Si vous placez dans un artefact deux classes se référençant entre elles, le forward normalement obligatoire avant la première sur la deuxième n'est pas placé.
Ci-joint un exemple d'une telle classe (dans mon projet, NB sera stéréotypée typedef).

Par ailleurs, dans le cas de classes paramétrées et instanciées serait-il possible d'ajouter des macros (style ${r0} par exemple) permettant d'accéder aux paramètres formels (resp. actuels) de la classe? Cela m'aurait permis de contourner facilement le problème précédent.

Cordialement,
Marc

test.zip
(8.53 KiB) Downloaded 766 times
Teaniel
 
Posts: 75
Joined: Sun 28 Oct 2012 18:57

Re: artefacts multi-classe

Postby Bruno Pagès » Mon 8 Jul 2013 06:08

Bonjour,

D'abord désolé pour cette réponse tardive.

Actuellement le calcul des dépendances est fait pour l'ensemble d'un fichier/artéfact, pas au niveau de chaque classe y étant définie, une classe définie dans un fichier/artéfact n'est donc pas prise en compte par une déclaration forward ou un #include. Franchement je ne suis pas très chaud pour changer le calcul des dépendances, sachant que vous pouvez très bien ajouter la déclaration forward par vous même dans la définition de l'artéfact. L'autre solution étant de systématiquement ajouter les déclarations forward des classes définies dans un fichier/artéfact sauf la première, mais je n'aime pas trop non plus.

Par ailleurs, dans le cas de classes paramétrées et instanciées serait-il possible d'ajouter des macros (style ${r0} par exemple) permettant d'accéder aux paramètres formels (resp. actuels) de la classe? Cela m'aurait permis de contourner facilement le problème précédent.

je ne vois pas en quoi cela vous aurais permis de contourner le problème puisque celui-ci se situe au niveau de C++ et donc après toute substitution effectuée lors de la génération de code
ImageAuthor of Bouml
Bruno Pagès
 
Posts: 474
Joined: Mon 20 Feb 2012 08:23
Location: France

Re: artefacts multi-classe

Postby Teaniel » Mon 8 Jul 2013 16:59

Bonjour à vous :)

Pas de problème pour la réponse, je ne suis pas particulièrement pressé ;)

Pour ce qui concerne le forward, c'est que j'en ai eu tout d'un coup un grand nombre... C'est effectivement ainsi que j'ai fait (le placer dans la def C++ du typedef), et rapidement ça m'a gavé... S'il n'y avait pas l'éventualité de re-générer ensuite (et à chaque fois de devoir refaire les modifications), je l'aurais placé directement dans le source après génération, ça aurait été plus simple. Et c'est pour cela que je vous ai fait la demande.
Et c'est encore pour cela que je me permets d'insister...

Pour ce qui concerne les macros, ce que je souhaitais faire en réalité devait donner le résultat suivant :
Code: Select all
class A;
typedef std::vector<A> NB;

class A {
    NB *liste;
};
J'ai omis le typedef dans mon exemple pour le rendre plus général.
Pour réaliser cela, j'avais pensé modifier l'option de génération du typedef en y mettant
Code: Select all
${comment}${tr0} ${vr0};
typedef ${type} ${name};
${tr0} serait le type du premier paramètre de classe (class / typename / ...), ${vr0} le paramètre spécialisé, et ${nr0} le nom du paramètre de spécialisation.
Il aurait ensuite suffi que je créée mes réalisations dans les schémas pour que tout ça se génère tout seul.
Et même en ne le mettant pas dans l'option de génération (ça donne une erreur si tr0 n'est pas class ou typename), on pourrait utiliser ce principe dans une définition c++ et tout créer par copier/coller en ne changeant ensuite que le paramètre de spécialisation.
Je pense d'ailleurs que ce ne sont sans doute pas les seules utilisations possibles de ces macros.
Plus généralement, je pense que ce serait sans doute une bonne idée d'étendre le panel de macros disponibles cela permettrait sans doute d'étendre les possibilités déjà importantes de votre logiciel ;) Bon ça, c'est un avis. Pas une demande ferme (c'est vous le chef après tout)...

Bien cordialement,
Marc
Teaniel
 
Posts: 75
Joined: Sun 28 Oct 2012 18:57


Return to Bug reports / Rapports de bugs

Who is online

Users browsing this forum: No registered users and 4 guests

cron