annotate arrows/@loop1/construct.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 672052bd81f8
children
rev   line source
samer@0 1 function u=construct(s,sizes_in)
samer@0 2 u=mkunit(s);
samer@0 3 nout=nargout(s);
samer@0 4
samer@0 5 [fn,state]=s.init(sizes_in{:});
samer@0 6 u.sizes_out = guess_sizes(fn,nout,sizes_in,state);
samer@0 7 u.get_state = @get_state;
samer@0 8 u.set_state = @set_state;
samer@0 9 u.process = ifx(nout>0,@proc,@proc0);
samer@0 10
samer@0 11 function s=get_state, s=state; end
samer@0 12 function set_state(s), state=s; end
samer@0 13 function varargout=proc(varargin)
samer@0 14 [varargout{1:nout},state]=fn(varargin{:},state);
samer@0 15 end
samer@0 16 function varargout=proc0(varargin)
samer@0 17 state=fn(varargin{:},state);
samer@0 18 end
samer@0 19 end
samer@0 20
samer@0 21 function sz_out=guess_sizes(fn,nout,sz_in,st)
samer@0 22 ins = map(@zeros,sz_in);
samer@0 23 if nout==0, s1=fn(ins{1},st); outs={};
samer@0 24 else [outs{1:nout},s1] = fn(ins{:},st); end
samer@0 25 sz_out = map(@size,outs);
samer@0 26 end
samer@0 27