Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Eclipse > Eclipse C & C++
Eclipse C & C++ Forum d'entraide Eclipse pour C et C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/11/2012, 15h20   #1
Nehmé
Membre régulier
 
Nehmé Bilal
Inscription : septembre 2008
Messages : 247
Détails du profil
Informations personnelles :
Nom : Nehmé Bilal
Âge : 30
Localisation : Canada

Informations forums :
Inscription : septembre 2008
Messages : 247
Points : 82
Points : 82
Par défaut Ajout de namespace à partir du code

Bonjour,

J'essaie d'ajouter un namespace dans la définition d'une classe suite à sa création dans Eclipse à partir du code.

J'ai une référence sur IFile correspondant à la classe et je l'utilise de la façon suivante:
Code :
1
2
ITranslationUnit tu = CoreModelUtil.findTranslationUnit(file);
INamespace ns = tu.createNamespace("foo", null,    null);
Malheureusement le namespace ajouté apparaît après la définition de la classe et ne contient pas la classe. Pour déplacer la classe à l'intérieur du namespace, j'utilise le code suivant:
Code :
1
2
3
ICElement[] ce = new ICElement[] { classElement }; // la classe
ICElement[] nse = new ICElement[] { ns }; // le namespace
tu.getCModel().move(ce, nse, null, null, true, null);
La classe est déplacée mais elle est placée après le namespace et non à l'intérieur de ce dernier:
Code :
1
2
3
4
5
6
7
namespace foo {
}
class C1 {
public:
    C1();
    virtual ~C1();
};
Quelqu'un saurait-il m'indiquer comment ajouter un namespace qui englobe la classe, ou comment déplacer la classe à l'intérieur du namespace ?

Merci d'avance pour votre aide.
Nehmé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 17h12   #2
emardjean
Membre du Club
 
Inscription : janvier 2006
Messages : 71
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : janvier 2006
Messages : 71
Points : 56
Points : 56
Envoyer un message via MSN à emardjean
Code :
1
2
3
4
5
6
7
8
9
namespace foo {
 
    class C1 {
    public:
        C1();
        virtual ~C1();
    };
 
}
emardjean est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/11/2012, 10h24   #3
MicBeastKiller
Membre du Club
 
Inscription : juin 2008
Messages : 121
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 121
Points : 63
Points : 63
Citation:
Envoyé par emardjean Voir le message
Code :
1
2
3
4
5
6
7
8
9
namespace foo {
 
class C1 {
public:
    C1();
    virtual ~C1();
};
 
}
???
si c'est la manière d'écrire le code C++ pour que la classe soit englobée dans le namespace, ce n'est pas du tout la question.
(avec la balise code, c'est mieux.)
MicBeastKiller est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/11/2012, 16h39   #4
Nehmé
Membre régulier
 
Nehmé Bilal
Inscription : septembre 2008
Messages : 247
Détails du profil
Informations personnelles :
Nom : Nehmé Bilal
Âge : 30
Localisation : Canada

Informations forums :
Inscription : septembre 2008
Messages : 247
Points : 82
Points : 82

Je sais comment ajouter un namespace manuellement mais j'essaie de le faire à partir du code dans un plugin pour eclipse CDT qui détecte la création de classes et ajoute le namespace automatiquement.
Nehmé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 08h27   #5
MicBeastKiller
Membre du Club
 
Inscription : juin 2008
Messages : 121
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 121
Points : 63
Points : 63
As-tu été voir sur le forum eclipse.org ?
MicBeastKiller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 21h34   #6
Nehmé
Membre régulier
 
Nehmé Bilal
Inscription : septembre 2008
Messages : 247
Détails du profil
Informations personnelles :
Nom : Nehmé Bilal
Âge : 30
Localisation : Canada

Informations forums :
Inscription : septembre 2008
Messages : 247
Points : 82
Points : 82
Oui j'ai posé la question dans le forum mais pas eu de réponses.
http://www.eclipse.org/forums/index.php/t/440552/

J'ai aussi posé la question sur stackoverflow:
http://stackoverflow.com/questions/1...ranslationunit

J'ai fini par ajouter le namespace en manipulant le text dans le IFile correspondant à la classe. J'ouvre le IFile, je cherche le début et la fin de la classe et j'ajoute le namespace. Même si ca fonctionne, ca me semble très risqué.
Nehmé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 08h45   #7
MicBeastKiller
Membre du Club
 
Inscription : juin 2008
Messages : 121
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 121
Points : 63
Points : 63
Citation:
Envoyé par Nehmé Voir le message
Pour déplacer la classe à l'intérieur du namespace, j'utilise le code suivant:
Code :
1
2
3
ICElement[] ce = new ICElement[] { classElement }; // la classe
ICElement[] nse = new ICElement[] { ns }; // le namespace
tu.getCModel().move(ce, nse, null, null, true, null);
À quoi servent les autres paramètres de la fonction "move" ?
MicBeastKiller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 16h02   #8
Nehmé
Membre régulier
 
Nehmé Bilal
Inscription : septembre 2008
Messages : 247
Détails du profil
Informations personnelles :
Nom : Nehmé Bilal
Âge : 30
Localisation : Canada

Informations forums :
Inscription : septembre 2008
Messages : 247
Points : 82
Points : 82
Citation:
Envoyé par MicBeastKiller Voir le message
À quoi servent les autres paramètres de la fonction "move" ?
http://help.eclipse.org/indigo/index...ipulation.html
Nehmé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 07h10   #9
MicBeastKiller
Membre du Club
 
Inscription : juin 2008
Messages : 121
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 121
Points : 63
Points : 63
Le container ne devrait-il pas plutôt être le namespace ?
MicBeastKiller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 17h00   #10
Nehmé
Membre régulier
 
Nehmé Bilal
Inscription : septembre 2008
Messages : 247
Détails du profil
Informations personnelles :
Nom : Nehmé Bilal
Âge : 30
Localisation : Canada

Informations forums :
Inscription : septembre 2008
Messages : 247
Points : 82
Points : 82
Citation:
Envoyé par MicBeastKiller Voir le message
Le container ne devrait-il pas plutôt être le namespace ?
Pardon la bonne description est ici:
http://help.eclipse.org/indigo/index...2FICModel.html

Le container est bien le namespace.
Nehmé est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h08.


 
 
 
 
Partenaires

Hébergement Web