Mercurial > repos > public > sbplib
annotate copyWithDefault.m @ 975:47b48a97c675 feature/getBoundaryOperator
Stupid merge makes this branch dangerous. Merging with other branches will result in unexpected changes. Never merge this branch with anything. Closing branch.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Thu, 03 Jan 2019 13:24:39 +0100 |
parents | 499653b553b8 |
children |
rev | line source |
---|---|
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 % Copy the struct src to dest with default values from default |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 % dest = copyWithDefault(src, default) |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 function dest = copyWithDefault(src, default) |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 % src does not have a value => use default |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 if isempty(src) |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 dest = default; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 return |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 end |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 % src has a value and is not a struct => use src |
304
499653b553b8
copyWithDefault: fixed bug.
Jonatan Werpers <jonatan@werpers.com>
parents:
240
diff
changeset
|
11 % src has a value and default is not a struct => use src |
499653b553b8
copyWithDefault: fixed bug.
Jonatan Werpers <jonatan@werpers.com>
parents:
240
diff
changeset
|
12 if ~isstruct(src) || ~isstruct(default) |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 dest = src; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 return |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 end |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 % src has a value and is a struct => add all default fields |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 dest = src; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 fn = fieldnames(default); |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 for i = 1:length(fn) |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 if isfield(src, fn{i}) |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 srcField = src.(fn{i}); |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 else |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 srcField = []; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 end |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 dest.(fn{i}) = copyWithDefault(srcField, default.(fn{i})); |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 end |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 end |