Mercurial > repos > public > sbplib
annotate copyWithDefault.m @ 577:e45c9b56d50d feature/grids
Add an Empty grid class
The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution.
In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 07 Sep 2017 09:16:12 +0200 |
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 |