comparison copyWithDefault.m @ 886:8894e9c49e40 feature/timesteppers

Merge with default for latest changes
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 15 Nov 2018 16:36:21 -0800
parents 499653b553b8
children
comparison
equal deleted inserted replaced
816:b5e5b195da1e 886:8894e9c49e40
1 % Copy the struct src to dest with default values from default
2 % dest = copyWithDefault(src, default)
3 function dest = copyWithDefault(src, default)
4 % src does not have a value => use default
5 if isempty(src)
6 dest = default;
7 return
8 end
9
10 % src has a value and is not a struct => use src
11 % src has a value and default is not a struct => use src
12 if ~isstruct(src) || ~isstruct(default)
13 dest = src;
14 return
15 end
16
17
18 % src has a value and is a struct => add all default fields
19 dest = src;
20
21 fn = fieldnames(default);
22 for i = 1:length(fn)
23 if isfield(src, fn{i})
24 srcField = src.(fn{i});
25 else
26 srcField = [];
27 end
28
29 dest.(fn{i}) = copyWithDefault(srcField, default.(fn{i}));
30 end
31 end