Mercurial > hg > ishara
annotate arrows/@loop1/construct.m @ 0:672052bd81f8
Initial partial import.
author | samer |
---|---|
date | Wed, 19 Dec 2012 22:38:28 +0000 |
parents | |
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 |