Template / Pointeur de fonction - C++ - Programmation
Marsh Posté le 15-01-2003 à 00:25:22
Cree 5 templates differents, chacunes prenant un nombre de paramètres different et ne deffinissant qu'un seul operateur ().
Ne fait pas appel aux paramètres de template par defaut.
Marsh Posté le 15-01-2003 à 03:19:03
Edit: grillé.
Les patrons C++ permettent bien de choisir entre plusieurs codes.
Pourquoi pas tout simplement faire autant de patrons exec que de nombre d'arguments possibles ?
Code :
|
Pas de valeur par défaut, pas d'embrouille...
Marsh Posté le 15-01-2003 à 08:06:15
thks, je savais pas qu'il etait possible de faire des classes possedant un nom identique mais un nb de template differents.
Comme ca c peinard
Marsh Posté le 15-01-2003 à 00:09:42
Bon, les soirées d'hiver étant longues et vu qu'il faut bien les occuper, je me suis fait un petit compilo. Le bougre commence a atteindre l'age de maturité, et il me sort du code asm avec le sourrire aux lèvres. Ledit code ASM respectant les normes __stcall de passage de paramêtres/retour de fonction, il est envisageable d'appeler depuis le C++ des fonctions compilées en runtime grace au compilo susnommé, par le truchement de pointeur de fonction. (simple et agréable) Et la se trouve le noeud du problème.
un appel de fonction du code compilé ne se limite pas a un push des parametres suivi d'un call. Il y a un petit setup a faire avant de pouvoir executer le code (mise d'une valeur sur EDI, entre autres conneries). Ce qui fait qu'un truc genre :
toto(20,30)
devrait etre (idéalement) transformé par le compilo (VC, pas le mien), en :
Le tout etant de faire ce setup de facon transparente pour l'utilisateur. Apres quelques bricolages, je suis arrivé a ca :
Bon, ca ca marche pour une fonction prenant un seul argument. Si y'en faut plus, alors ca ne va plus. Re-bricolage :
Les fonctions avec plus de 4 parametres se faisant plutot rare (surtout dans mon langage), ca devrait aller. (au pire, on rajoute une peletée de template au début, deux louches de surcharges de fonctions, et zou).
La supairbe classe Lock sert a empecher un appel de fonction avec plus d'argument qu'initialement prévu. Genre :
Mais ca ne protege pas contre l'appel avec moins de parametres qu'initialement prévu. Et c'est la que je fais appel a vous. Est ce que qqun voit comment faire cette protection (a la compilation du code C++), de facon (plus ou moins) propre ?
suggestions appréciées (et si la chose ci dessus vous a fait frémir d'horreur, je suis ouvert a toute amélioration )
thks !