Module weaver

This module provides parse_transform/2 function.

Copyright © 2011 Alexei Krasnopolski

Version: 1.0.1

Introduced in: 2011-06-20

Authors: Alexei Krasnopolski (krasnop@bellsouth.net) [web site: http://crasnopolski.com/].

Description

This module provides parse_transform/2 function. Compiler using the function as a plug-in to weaving source code and to embedd AOP code in matched functions.

Function Index

add_to_export/1*If function from Functions list has around advice then add this function to -export list to allow advice around function to invoke it.
analyze_forms/2*Retrives from form list descriptions of all functions these match AOP configurations.
analyze_forms/4*Equivalent to weaver:analyze_forms / 2.
is_arity_match/2*checks if Arity matches Arity_regexp.
is_pointcut_match/3*checks if function Module:Func_name/Arity matches Pointcut.
parse_transform/2Erlang compiler invokes the function and passes AF tree formes along with Options.
process_forms/3*Changes AF tree Forms by using Functions and Add_to_export.
process_forms/5*Equivalent to weaver:process_forms / 3.
select/3*Extracts from Aspects list all aspects that matches the function Module:Func.

Function Details

parse_transform/2

parse_transform(Forms::list(), Options::list()) -> [Form]

throws nothing

Erlang compiler invokes the function and passes AF tree formes along with Options. The function changes AF tree formes according with AOP configuration and return them to compiler.

analyze_forms/2 *

analyze_forms(Forms::list(), Aspects::list()) -> [tuple()]

throws nothing

Retrives from form list descriptions of all functions these match AOP configurations. Return list of tuples in form {Func_name, Arity, Aspects::list(#aspect{})}.

analyze_forms/4 *

analyze_forms(Forms::list(), Aspects::list(), Module::atom(), Result::list()) -> [tuple()]

throws nothing

Equivalent to weaver:analyze_forms / 2.

select/3 *

select(Module::atom(), Func::tuple(), Aspects::[#aspect{}]) -> Aspects::[#aspect{}]

throws nothing

Extracts from Aspects list all aspects that matches the function Module:Func

is_pointcut_match/3 *

is_pointcut_match(Module::atom(), Func::tuple(), Pointcut::#pointcut{}) -> boolean()

throws nothing

checks if function Module:Func_name/Arity matches Pointcut.

is_arity_match/2 *

is_arity_match(Arity::integer(), Arity_regexp) -> boolean()

throws nothing

checks if Arity matches Arity_regexp.

add_to_export/1 *

add_to_export(Functions::list()) -> [tuple()]

throws nothing

If function from Functions list has around advice then add this function to -export list to allow advice around function to invoke it.

process_forms/3 *

process_forms(Forms::list(), Functions::[T], Add_to_export::[F]) -> Forms::list()

throws nothing

Changes AF tree Forms by using Functions and Add_to_export.

process_forms/5 *

process_forms(Forms::list(), Functions::list(), Add_to_export::list(), Module::atom(), Result::list()) -> Forms::list()

Equivalent to weaver:process_forms / 3.


Generated by EDoc, Aug 3 2012, 20:09:54.