view examples/code/@polynomial/subsasgn.m @ 21072:a9ed4104ecfd

doc: Rewrite documentation for Object Oriented Programming. * octave.texi: Rename "Manipulating Classes" node to "Class Methods" * oop.txi: Rewrite signicant parts of Object Oriented Programming chapter. * examples/code/@FIRfilter/subsasgn.m, examples/code/@FIRfilter/subsref.m, examples/code/@polynomial/get.m, examples/code/@polynomial/subsasgn.m: Enclose property in error messages in double quotes ("%s"). * examples/code/@polynomial/subsref.m: Rename input object to 'p'. Rename variable "ind" to "idx". Enclose property in error messages in double quotes ("%s"). * ov-class.cc (Fsuperiorto, Finferiorto): Improve docstrings. * ov-usr-fcn.cc (Foptimize_subsasgn_calls): Improve docstring. * ov.cc (Fsubsref, Fsubsasgn): Improve docstrings. * display.m: Rewrite docstring. Rename input variable to "obj". Remove unused output variable from function declaration. * subsindex.m: Rename input variable to "obj". Rewrite examples in docstring. Add input validation and BIST tests to m-file.
author Rik <rik@octave.org>
date Thu, 14 Jan 2016 13:30:22 -0800
parents fd97ed44f2da
children
line wrap: on
line source

function p = subsasgn (p, s, val)

  if (isempty (s))
    error ("@polynomial/subsasgn: needs index");
  endif

  switch (s(1).type)

    case "{}"
      ind = s(1).subs;
      if (numel (ind) != 1)
        error ("@polynomial/subsasgn: need exactly one index");
      elseif (numel (s) != 1)
        error ("@polynomial/subsasgn: chained subscripts not allowed for {}");
      endif

      if (isnumeric (ind{1}))
        p.poly(ind{1}+1) = val;
      else
        p.poly(ind{1}) = val;
      endif

    case "."
      fld = s(1).subs;
      if (! strcmp (fld, "poly"))
        error ('@polynomial/subsasgn: invalid property "%s"', fld);
      endif
      if (numel (s) == 1)
        p.poly = val;
      else
        p.poly = subsasgn (p.poly, s(2:end), val);
      endif

    otherwise
      error ("@polynomial/subsasgn: invalid subscript type");

  endswitch

endfunction