view examples/code/@polynomial/subsref.m @ 21070:fd97ed44f2da

doc: Use more coding conventions in Object Oriented reference example code. * examples/code/@FIRfilter/FIRfilter.m, examples/code/@FIRfilter/FIRfilter_aggregation.m, examples/code/@FIRfilter/subsasgn.m, examples/code/@FIRfilter/subsref.m, examples/code/@polynomial/display.m, examples/code/@polynomial/double.m, examples/code/@polynomial/get.m, examples/code/@polynomial/mtimes.m, examples/code/@polynomial/numel.m, examples/code/@polynomial/polynomial.m, examples/code/@polynomial/polynomial_superiorto.m, examples/code/@polynomial/polyval.m, examples/code/@polynomial/roots.m, examples/code/@polynomial/set.m, examples/code/@polynomial/subsasgn.m, examples/code/@polynomial/subsref.m: Remove "Function File" from deftypefn. Use names of variables in error messages. Surround invalid items in error messages with single quotes. Use meaningful variable names.
author Rik <rik@octave.org>
date Thu, 14 Jan 2016 09:59:07 -0800
parents 73ab962bc52d
children a9ed4104ecfd
line wrap: on
line source

function r = subsref (a, s)

  if (isempty (s))
    error ("@polynomial/subsref: missing index");
  endif

  switch (s(1).type)

    case "()"
      ind = s(1).subs;
      if (numel (ind) != 1)
        error ("@polynomial/subsref: need exactly one index");
      endif
      r = polyval (fliplr (a.poly), ind{1});

    case "{}"
      ind = s(1).subs;
      if (numel (ind) != 1)
        error ("@polynomial/subsref: need exactly one index");
      endif

      if (isnumeric (ind{1}))
        r = a.poly(ind{1}+1);
      else
        r = a.poly(ind{1});
      endif

    case "."
      fld = s.subs;
      if (! strcmp (fld, "poly"))
        error ("@polynomial/subsref: invalid property '%s'", fld);
      endif
      r = a.poly;

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

  endswitch

  if (numel (s) > 1)
    r = subsref (r, s(2:end));
  endif

endfunction