Mercurial > hg > ishara
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 |