annotate arrows/@erate/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
samer@0 3 nin=nargin(s.base);
samer@0 4
samer@0 5 u=construct(s.base,s.sizes_in(1:nin));
samer@0 6 u.sizes_out = [u.sizes_out]; % !!! this is wrong. need better type system
samer@0 7 u.process = mkproc(u.process,nin,nargout(s.base));
samer@0 8 end
samer@0 9
samer@0 10 function f=mkproc(g,nin,nout)
samer@0 11 empty={{}};
samer@0 12 f=@proc;
samer@0 13 if nin==1 && nout==1, f=@proc_11;
samer@0 14 elseif nin==1 && nout==0, f=@proc_10;
samer@0 15 else, f=@proc_nn; end
samer@0 16
samer@0 17 function proc_10(x1),
samer@0 18 if ~isempty(x1), g(x1{1}); end;
samer@0 19 end
samer@0 20 function y1=proc_11(x1,x), if isempty(x1), y1={}; else y1={g(x1{1})}; end; end
samer@0 21
samer@0 22 function varargout=proc_nn(varargin)
samer@0 23 if any(cellfun(@isempty,varargin)), varargout=repmat(empty,1,nout);
samer@0 24 else
samer@0 25 ins=cellfun(@unbox,varargin(1:nin));
samer@0 26 [outs{1:nout}]=g(ins{:});
samer@0 27 varargout=cellfun(@box,outs);
samer@0 28 end
samer@0 29 end
samer@0 30 function x=unbox(y), x=y{1}; end
samer@0 31 function y=box(x), y={x}; end
samer@0 32 end
samer@0 33