Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# Déclarer et utiliser un tableau XPCOM en C++

Envoyé par : Y.G.

Date : 24/05/2007 20:22

Bonjour, je cherche juste à créer un tableau XPCOM en C++ pour y mettre des char*. Je sais que je devrais utiliser nsIMutableArray et la méthode appendElement() mais je ne trouve aucun exemple qui montre comment le faire. D'ailleurs je ne sais pas créer non plus de booléen PRBool qu'il faut passer à appendElement(). Je dois écrire quoi exactement pour créer mon tableau et le remplir par exemple avec "toto" ? Je dois faire quels #include ? Merci de votre aide.

# Re: Déclarer et utiliser un tableau XPCOM en C++

Envoyé par : David Marteau

Date : 24/05/2007 23:35

Est-ce qu'un nsIMutableArray s'impose vraiment si il s'agit simplement de retourner un tableau que l'on crée pour l'occasion.

Le plus simple est de retourner un simple tableau de char*. la declaration IDL sera simplement:

void myfunc( out PRUint32 count, [array, size_is(count)] out string keys);

Attention à bien allouer la mémoire pour le tableau *et* les chaines.

Un PRBool est un simple entier qui vaut PR_TRUE (1) ou PR_FALSE (0)

# Re: Déclarer et utiliser un tableau XPCOM en C++

Envoyé par : Y.G.

Date : 25/05/2007 19:33

Est ce que vous pourriez mettre un exemple de code pour mettre "toto" dans un tableau ? En partant de votre IDL, je dois implémenter quelque chose comme

NS_IMETHODIMP myfunc(PRUint32 *count, char ***keys)

Pour écrire dans le tableau keys (paramètre out) avec "toto" dedans je dois faire quoi ? J'ai pensé à :

char *toto = PR_Malloc(4 + 1);
if (toto != NULL) { *toto = "toto"; }

Ensuite je dois faire quoi ?

*keys[0] = *toto; ???
return NS_OK;

Merci de votre aide.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.