The Design and Implementation of AspectC++
A metaobject protocol for C++