Par "hooking", j'entends la possibilité de remplacer de manière non intrusive le comportement d'une fonction. Quelques exemples :
- Imprimer un message de journal avant et/ou après le corps de la fonction.
- Enveloppez le corps de la fonction dans un corps try catch.
- Mesure de la durée d'une fonction
- etc...
J'ai vu différentes implémentations dans divers langages de programmation et bibliothèques :
- Programmation orientée aspect
- Les fonctions de première classe de JavaScript
- Modèle de décorateur OOP
- Sous-classement de WinAPI
- Ruby's
method_missing
-
SWIG 's
%exception
qui a pour but d'envelopper toutes les fonctions dans un bloc try/catch, peut être (ab)utilisé dans le but d'accrocher
Mes questions sont les suivantes :
- C'est une fonctionnalité tellement utile que je me demande pourquoi elle n'a jamais été implémentée en tant que fonctionnalité du langage C++. Y a-t-il des raisons qui empêchent de la rendre possible ?
- Quelles sont les techniques ou bibliothèques recommandées pour implémenter ceci dans un programme C++ ?