comparison arrows/@loop1/construct.m @ 0:672052bd81f8

Initial partial import.
author samer
date Wed, 19 Dec 2012 22:38:28 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:672052bd81f8
1 function u=construct(s,sizes_in)
2 u=mkunit(s);
3 nout=nargout(s);
4
5 [fn,state]=s.init(sizes_in{:});
6 u.sizes_out = guess_sizes(fn,nout,sizes_in,state);
7 u.get_state = @get_state;
8 u.set_state = @set_state;
9 u.process = ifx(nout>0,@proc,@proc0);
10
11 function s=get_state, s=state; end
12 function set_state(s), state=s; end
13 function varargout=proc(varargin)
14 [varargout{1:nout},state]=fn(varargin{:},state);
15 end
16 function varargout=proc0(varargin)
17 state=fn(varargin{:},state);
18 end
19 end
20
21 function sz_out=guess_sizes(fn,nout,sz_in,st)
22 ins = map(@zeros,sz_in);
23 if nout==0, s1=fn(ins{1},st); outs={};
24 else [outs{1:nout},s1] = fn(ins{:},st); end
25 sz_out = map(@size,outs);
26 end
27