view test/classdef/struct_wrapper.m @ 31214:19bd1953fc1d stable

GitHub-CI: Remove ubuntu-18.04 runners from build matrix. * .github/workflow/make.yaml (ubuntu): GitHub-hosted runners for ubuntu-18.04 are being deprecated. Remove them from build matrix. See also: https://github.com/actions/runner-images/issues/6002
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 30 Aug 2022 11:16:27 +0200
parents ad71c8d87cff
children
line wrap: on
line source

classdef struct_wrapper
  properties
    s;
  end
  methods
    function o = struct_wrapper ()
      if (nargin == 0)
        o.s = struct ();
      else
        error ('struct_wrapper:SyntaxError', ...
               'struct_wrapper: Invalid syntax');
      end
    end
    function n = numel (o, varargin)
      n = 1;
    end
    function varargout = subsref (o, p)
      if (isequal (p(1).type, '{}'))
        r = [];
        for i = 1:numel (p(1).subs)
          r = [r, getfield(o.s, p(1).subs{i})];
        end
        varargout = {r};
      else
        error ('struct_wrapper:SyntaxError', ...
               'struct_wrapper: Invalid syntax');
      end
    end
    function o = subsasgn (o, p, varargin)
      if (isequal (p(1).type, '{}'))
        for i = 1:numel (p(1).subs)
          o.s = setfield (o.s, p(1).subs{i}, varargin{1}(i));
        end
      else
        error ('struct_wrapper:SyntaxError', ...
               'struct_wrapper: Invalid syntax');
      end
    end
  end
end