Bonjour à tous, je ne pense pas que ce que je souhaite faire est réalisable, mais on ne sait jamais.
J'aimerais introduire un système d'évènement. Le système actuel consiste à faire un emit("nom de l'évènement",/*paramètres*/); (les paramètres sont à nombre indéterminés (utilisation de variadiques template)).
Mon problème :
Je ne peux savoir ou l'utilisateur voudra émettre : si je créé un objet Textbox, je peux décider de mettre un emit quand la valeur change, quand la textbox est cliquée,... mais je ne peux savoir lesquelles seront utiles à l'utilisateur. De plus, comment décider si il faut émettre au début de la fonction qui change la valeur( avant qu'elle ne change) ou à la fin (une fois qu'elle est changée)?
Les solutions :
-Solution que j'utilise actuellement mais qui ne me satisfait pas : je met des emit "un peu partout" en espérant que l'utilisateur trouvera ce qu'il veut.
-Obligé l'utilisateur à passer par un parser (de mon invention), qui trouvera la macro SetEventEmission(nom de la fonction, END ou BEGIN voire numéro de ligne, nom de l'évènement, paramètres éventuels); Le parser rajoutera la ligne de code nécéssaire. Cette solution ne me satisfait pas : obliger de passer par un parser + coder le parser.
-Trouver avec le préprocesseur un moyen intelligent de rajouter ce genre de macro. Défaut : pas encore trouvé comment faire.
L'objectif : pouvoir définir la macro :
-SetEventEmission(nom_de_la_fonction,Numéro de ligne / Begin/End (juste avant le return), nom_de_l'évènement,paramètres);
Ainsi, plus besoin d'écrire aucun emit, c'est l'utilisateur qui choisit.
Ma question : Peut-on faire sa avec le préprocesseur ? Si oui, comment ? Si non, existe-il un moyen alternatif ?
Merci d'avoir pris le temps de lire le post, en espérant que vous m'ayez compris.
Partager