Mercurial > hg > ishara
annotate general/options.m @ 37:beb8a3f4a345
Renamed prefs to options throughout.
author | samer |
---|---|
date | Mon, 28 Jan 2013 10:52:11 +0000 |
parents | |
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 |