view copyWithDefault.m @ 526:d8833f0a9f1a feature/boundaryGroup

Change the BoundaryGroup class into a simpler cellarray style
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 03 Aug 2017 09:55:59 +0200
parents 499653b553b8
children
line wrap: on
line source

% Copy the struct src to dest with default values from default
%   dest = copyWithDefault(src, default)
function dest = copyWithDefault(src, default)
    % src does not have a value => use default
    if isempty(src)
        dest = default;
        return
    end

    % src has a value and is not a struct => use src
    % src has a value and default is not a struct => use src
    if ~isstruct(src) || ~isstruct(default)
        dest = src;
        return
    end


    % src has a value and is a struct => add all default fields
    dest = src;

    fn = fieldnames(default);
    for i = 1:length(fn)
        if isfield(src, fn{i})
            srcField = src.(fn{i});
        else
            srcField = [];
        end

        dest.(fn{i}) = copyWithDefault(srcField, default.(fn{i}));
    end
end