Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Wrapper des fonctions: pb avec ellipsis (les "...") [ Divers / Général ] (kmcl)

jeudi 10 mai 2007 à 14:55:13 | Wrapper des fonctions: pb avec ellipsis (les "...")

kmcl

Bonjour,
Je suis en train de développer un outil de test black-box de composants soft de type dll. L'une des exigences qui m'est faite est la possibilité d'écrire un wrapper pour les fonctions à tester afin, notamment, de pouvoir instrumentaliser les appels.

En gros, pour tester une fonction telle que:
   void foo( int x, float y );
on créer une fonction:
   void WRAP_foo( int x, float y )
   {
      // do something
      foo( x, y );
      // do something else
   }
Et c'est cette fonction wrappée qui est appelée dans les Test Cases à la place de l'originale.

Tout allait pour le mieux jusqu'à l'arrivée des "ellipsis" ! Plus clairement, comment wrapper des fonctions du type:
    void bar( int x, ... );         ????

Là je suis sur un os que je ne parviens pas à ronger... Quelqu'un a-t'il les dents assez dures ou l'os est-il trop dur?
Merci d'avance!
Christophe

jeudi 10 mai 2007 à 18:57:50 | Re : Wrapper des fonctions: pb avec ellipsis (les "...")

ncoder

Ce n'est bien sûr qu'une suggestion, mais pourquoi tu ne regrouperais pas tous les arguments reçus par fonction void WRAP_bar( int x, ... ); grâce à va_list, va_start, va_arg, va_end (un exemple ici : http://www.cppfrance.com/codes/FONCTIONS-TAILLE-VARIABLE-ARGUMENTS_10301.aspx)
et les "condenserais" un certain nombre d'arguments constant ?
Mais c'est suivant ce que fait ta fonction bar( int x, ... );


Par exemple, si tu as printf("Test %d %s", 1, "va_list" );
Tu renvoies
printf("Test 1 va_list");
ou bien
printf("Test ");
printf("1 ");
printf("va_list");

Ce qui revient exactement pareil à
printf("Test %d %s", 1, "va_list" );

Tu auras fait ce que tu veux avant et après l'appel de ta fonction bien sûr.

Tout dépend de ce que fait ta fonction bar(int x, ...);

A+
Bonne programmation

                                         Site

vendredi 11 mai 2007 à 10:34:47 | Re : Wrapper des fonctions: pb avec ellipsis (les "...")

kmcl

Bonjour,

L'idée de "condensation" est très intéressante mais inapplicable ici... En effet, je développe un Framework de test en "boite-noire" et, du coup, je n'ai aucune connaissance --a priori-- de la fonction à wrapper et surtout je ne peux en aucun cas modifier le comportement de la fonction "bar" afin qu'elle se charge du redécoupage de la liste d'arguments.

La deuxième idée basée sur l'appel successif n'est pas possible non plus car je n'ai pas de postulat me disant que
bar(x, y, z); == bar(x); bar(y); bar(z);

C'est vraiment un os...

Merci quand même!
A+




Cette discussion est classé dans : fonction, void, fonctions, wrapper, ellipsis


Répondre à ce message

Sujets en rapport avec ce message

Creer ses propres fonctions [ par CHENRY ] En VC++6, avec les MFC, je voudrais ajouter à mon projet un fichier de fonctions et procédures personnelles. J'ai créé un fichier d'en-tete contenant utiliser une fonction d'une lib C dans une classe c++ [ par snook ] Bonjour,j'aimerais savoir comment doit on proceder pourappeler une fonction d'une librairie ecrite en C dansmon programme C++?exemple: ma lib possede Problème de fonctions [ par sebastienbro ] Voilà, j'ai créé une fonction Cryptage qui renvoi un type long pr savoir si il y a une erreur ou pas.J'aimerais savoir comment faire pour que la fonct appel de fonctions [ par lysane ] pour alléger le code j'ai créer un fichier fonctions.cpp ou je met plusieures fonctions qui seront untilées dans une autre classe lors d'un ifexemple: Pointeur sur fonction envoyé par dll [ par MoDDiB ] Voila ce que j'ai fais mais ca ne marche pas :Dll :#include BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ retu CDialog + Sockey ? [ par mickeydisn ] je suis entrin de realiser une application un a serveur Socket en Consol . L'application console pas de PB . Le clien j'ai cree une forme avec un edit Pointeur vers une fonction dans une classe ... [ par MoDDiB ] Supposons que j'ai la fonctionvoid Fonction(int test,int t);appartenant a la classe Cclass.Quelle est la syntaxe pour creer un pointeur vers cette fon Abus de "protected" dans les classes ? [ par Galmiza ] Salut cher lecteur,Voici un exemple de ce qu'on voit assez souvent dans les codes, mais dont je ne saisi pas l'utilité:Dans une classe, protection des Classe abstraite et fonctions [ par matge ] BonjourJe possede une classe abstraite dans une librairie .h qui se nomme RTPTRANSMITTERCelle ci possede une fonction INIT(bool Threadsafe)Comment d MFC ( fonction + variables globales ) [ par indusine ] Salut! Je développe une MFC AppWizard(exe).Mon application est Dialog based (ni SDI ni MDI).J'utilise des fonctions auquelles je dois faire appel dans


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.