Aspectc++

基本概念

PoinCuts

AspectC++中的切面以模块化的方式实现横切关注点。考虑这一点,AspectC++语言最重要的元素就是pointcut(切点)。pointcut通过定义在哪种条件下切面会生效来描述一组切面加入点(join points),因此,每个join point可以引用函数,类型/类,变量或访问join point的点,使得该条件可以是例如到达指定代码位置的事件或者分配 具有一定值的变量。 根据pointcut的类型,它们在编译时或运行时进行评估

Match Expressions

AspectC ++中有两种类型的切入点:代码切入点和名称切入点。 名称切入点描述了一组(静态)已知的程序实体,如类型/类,变量,函数或命名空间。 所有名称切入点都基于匹配表达式。 匹配表达式可以理解为搜索模式。 在这种搜索模式中,特殊字符“%”被解释为名称或部分签名的通配符。 特殊字符序列“… “匹配函数签名中的任意数量的参数或限定名称中的任意数量的范围。 匹配表达式是带引号的字符串。

Example: match expressions (name pointcuts)

“int C::%(…)”

匹配返回int的C类的所有成员函数

匹配名称以List结尾的任何名称空间,类,结构,联合或枚举。 在匹配的命名空间或类的情况下,匹配表达式还匹配命名空间resp内的实体。 类