view test/classdef/struct_wrapper.m @ 31249:de6fc38c78c6

Make Jacobian types offered by dlsode.f accessible by lsode (bug #31626). * liboctave/numeric/LSODE-opts.in: Add options "jacobian type", "lower jacobian subdiagonals", and "upper jacobian subdiagonals". * liboctave/numeric/LSODE.cc (file scope, lsode_j, LSODE::do_integrate (double)): Handle new configurable Jacobian types. * build-aux/mk-opts.pl: Don't implicitly convert to integer in condition.
author Olaf Till <olaf.till@uni-jena.de>
date Fri, 12 Nov 2010 08:53:05 +0100
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