annotate general/options.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents beb8a3f4a345
children
rev   line source
samer@37 1 % options - create name-value map as a structure
samer@37 2 %
samer@37 3 % Arguments can be name value pairs, eg
samer@37 4 % opts=options('foo',5,'bar',7)
samer@37 5 % opts.foo=4
samer@37 6 % opts.bar=7
samer@37 7 %
samer@37 8 % Or structures
samer@37 9 % opts=options(defopts,'foo',5)
samer@37 10 %
samer@37 11 % Later arguments override earlier ones. A typical usage is
samer@37 12 % with variable argument lists and GETPARAM, eg
samer@37 13 %
samer@37 14 % function somefun(a,b,varargin)
samer@37 15 % ...
samer@37 16 % opts=options('foo',5,varargin{:});
samer@37 17 % fooness=opts.foo;
samer@37 18 % barness=getparam(opts,'bar',12);
samer@37 19 %
samer@37 20 % See also: GETPARAM, GETFIELD, ISFIELD
samer@37 21 function P=options(varargin)
samer@37 22
samer@37 23 P=struct;
samer@37 24 n=1;
samer@37 25 while n<=length(varargin)
samer@37 26 arg=varargin{n};
samer@37 27 if isstruct(arg)
samer@37 28 P=cpfields(fieldnames(arg),arg,P);
samer@37 29 elseif iscell(arg)
samer@37 30 pairs=arg;
samer@37 31 for k=1:length(pairs)
samer@37 32 P=setfield(P,pairs{k}{1},pairs{k}{2});
samer@37 33 end
samer@37 34 else
samer@37 35 P=setfield(P,varargin{n},varargin{n+1});
samer@37 36 n=n+1;
samer@37 37 end
samer@37 38 n=n+1;
samer@37 39 end
samer@37 40