Mercurial > hg > ishara
annotate general/funutils/@function_handle/decorate.m @ 38:9d24b616bb06
Added function algebra.
author | samer |
---|---|
date | Tue, 29 Jan 2013 15:59:01 +0000 |
parents | beb8a3f4a345 |
children |
rev | line source |
---|---|
samer@13 | 1 % decorate - Decorate function with pre and post operations and optional pausing |
samer@13 | 2 % |
samer@13 | 3 % decorate :: |
samer@13 | 4 % (A->B{:}) ~'function from 1 argument to any number of returns', |
samer@13 | 5 % options { |
samer@13 | 6 % pre :: (A=>void)/@nop ~'action to perform before calling function'; |
samer@13 | 7 % post :: (A=>void)/@nop ~'action to perform after calling function' |
samer@13 | 8 % } |
samer@13 | 9 % -> (A->B{:}) ~'new function incorporating pre and post actions'. |
samer@13 | 10 function f1=decorate(f,varargin) |
samer@37 | 11 opts=options(varargin{:}); |
samer@13 | 12 pf=pauser(opts); |
samer@13 | 13 if isfield(opts,'pre') || isfield(opts,'post') |
samer@13 | 14 pre=getparam(opts,'pre',@nop); |
samer@13 | 15 post=getparam(opts,'post',@nop); |
samer@13 | 16 f1=@f_bracket; |
samer@13 | 17 else |
samer@13 | 18 f1=@f_simple; |
samer@13 | 19 end |
samer@13 | 20 |
samer@13 | 21 function x=f_simple(x), x=f(x); pf(); end |
samer@13 | 22 function x=f_bracket(x), pre(x); x=f(x); post(x); pf(); end |
samer@13 | 23 end |