Mercurial > repos > public > sbplib
annotate copyWithDefault.m @ 1037:2d7ba44340d0 feature/burgers1d
Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 18 Jan 2019 09:02:02 +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 |