comparison doc/interpreter/oop.txi @ 19627:446c46af4b42 stable

strip trailing whitespace from most source files * Makefile.am, NEWS, build-aux/common.mk, configure.ac, doc/Makefile.am, doc/doxyhtml/Makefile.am, doc/interpreter/Makefile.am, doc/interpreter/arith.txi, doc/interpreter/audio.txi, doc/interpreter/basics.txi, doc/interpreter/bugs.txi, doc/interpreter/container.txi, doc/interpreter/cp-idx.txi, doc/interpreter/data.txi, doc/interpreter/debug.txi, doc/interpreter/diagperm.txi, doc/interpreter/diffeq.txi, doc/interpreter/doccheck/README, doc/interpreter/doccheck/spellcheck, doc/interpreter/emacs.txi, doc/interpreter/errors.txi, doc/interpreter/eval.txi, doc/interpreter/expr.txi, doc/interpreter/external.txi, doc/interpreter/fn-idx.txi, doc/interpreter/func.txi, doc/interpreter/geometry.txi, doc/interpreter/geometryimages.m, doc/interpreter/gpl.txi, doc/interpreter/grammar.txi, doc/interpreter/gui.txi, doc/interpreter/image.txi, doc/interpreter/install.txi, doc/interpreter/interp.txi, doc/interpreter/interpimages.m, doc/interpreter/intro.txi, doc/interpreter/io.txi, doc/interpreter/java.txi, doc/interpreter/linalg.txi, doc/interpreter/macros.texi, doc/interpreter/matrix.txi, doc/interpreter/munge-texi.pl, doc/interpreter/nonlin.txi, doc/interpreter/numbers.txi, doc/interpreter/obsolete.txi, doc/interpreter/octave-config.1, doc/interpreter/octave.texi, doc/interpreter/oop.txi, doc/interpreter/op-idx.txi, doc/interpreter/optim.txi, doc/interpreter/package.txi, doc/interpreter/plot.txi, doc/interpreter/poly.txi, doc/interpreter/preface.txi, doc/interpreter/quad.txi, doc/interpreter/set.txi, doc/interpreter/signal.txi, doc/interpreter/sparse.txi, doc/interpreter/sparseimages.m, doc/interpreter/splineimages.m, doc/interpreter/stats.txi, doc/interpreter/stmt.txi, doc/interpreter/strings.txi, doc/interpreter/system.txi, doc/interpreter/testfun.txi, doc/interpreter/tips.txi, doc/interpreter/var.txi, doc/interpreter/vectorize.txi, doc/liboctave/Makefile.am, doc/liboctave/array.texi, doc/liboctave/bugs.texi, doc/liboctave/cp-idx.texi, doc/liboctave/dae.texi, doc/liboctave/diffeq.texi, doc/liboctave/error.texi, doc/liboctave/factor.texi, doc/liboctave/fn-idx.texi, doc/liboctave/gpl.texi, doc/liboctave/install.texi, doc/liboctave/intro.texi, doc/liboctave/liboctave.texi, doc/liboctave/matvec.texi, doc/liboctave/nleqn.texi, doc/liboctave/nlfunc.texi, doc/liboctave/ode.texi, doc/liboctave/optim.texi, doc/liboctave/preface.texi, doc/liboctave/quad.texi, doc/liboctave/range.texi, doc/refcard/Makefile.am, doc/refcard/refcard.tex, etc/HACKING, etc/NEWS.1, etc/NEWS.2, etc/NEWS.3, etc/OLD-ChangeLogs/ChangeLog, etc/OLD-ChangeLogs/doc-ChangeLog, etc/OLD-ChangeLogs/scripts-ChangeLog, etc/OLD-ChangeLogs/src-ChangeLog, etc/OLD-ChangeLogs/test-ChangeLog, etc/PROJECTS, etc/README.Cygwin, etc/README.MacOS, etc/README.MinGW, etc/README.gnuplot, etc/gdbinit, etc/icons/Makefile.am, examples/@polynomial/end.m, examples/@polynomial/subsasgn.m, examples/Makefile.am, examples/standalonebuiltin.cc, libgui/Makefile.am, libgui/qterminal/libqterminal/README, libgui/qterminal/libqterminal/unix/BlockArray.cpp, libgui/qterminal/libqterminal/unix/BlockArray.h, libgui/qterminal/libqterminal/unix/Character.h, libgui/qterminal/libqterminal/unix/CharacterColor.h, libgui/qterminal/libqterminal/unix/Emulation.cpp, libgui/qterminal/libqterminal/unix/Emulation.h, libgui/qterminal/libqterminal/unix/Filter.cpp, libgui/qterminal/libqterminal/unix/Filter.h, libgui/qterminal/libqterminal/unix/History.cpp, libgui/qterminal/libqterminal/unix/History.h, libgui/qterminal/libqterminal/unix/KeyboardTranslator.cpp, libgui/qterminal/libqterminal/unix/KeyboardTranslator.h, libgui/qterminal/libqterminal/unix/LineFont.h, libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp, libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h, libgui/qterminal/libqterminal/unix/Screen.cpp, libgui/qterminal/libqterminal/unix/Screen.h, libgui/qterminal/libqterminal/unix/ScreenWindow.cpp, libgui/qterminal/libqterminal/unix/ScreenWindow.h, libgui/qterminal/libqterminal/unix/TerminalCharacterDecoder.cpp, libgui/qterminal/libqterminal/unix/TerminalCharacterDecoder.h, libgui/qterminal/libqterminal/unix/Vt102Emulation.h, libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp, libgui/qterminal/qterminal/main.cpp, libgui/src/m-editor/file-editor-tab.cc, libgui/src/octave-gui.cc, libgui/src/octave-qt-link.cc, libinterp/corefcn/data.cc, libinterp/corefcn/defun-int.h, libinterp/corefcn/det.cc, libinterp/corefcn/gl2ps-renderer.cc, libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h, libinterp/corefcn/ls-mat5.cc, libinterp/corefcn/lu.cc, libinterp/corefcn/oct-tex-parser.yy, libinterp/corefcn/oct-tex-symbols.in, libinterp/corefcn/quadcc.cc, libinterp/corefcn/zfstream.cc, libinterp/dldfcn/__eigs__.cc, libinterp/dldfcn/__voronoi__.cc, libinterp/gendoc.pl, libinterp/genprops.awk, libinterp/mk-errno-list, libinterp/mk-pkg-add, libinterp/mkbuiltins, libinterp/mkdefs, libinterp/mkdocs, libinterp/mkops, libinterp/octave-value/ov-java.cc, libinterp/parse-tree/lex.ll, libinterp/parse-tree/oct-parse.in.yy, libinterp/parse-tree/octave.gperf, liboctave/Makefile.am, liboctave/array/Array.cc, liboctave/array/module.mk, liboctave/cruft/daspk/datv.f, liboctave/cruft/daspk/dcnst0.f, liboctave/cruft/daspk/dcnstr.f, liboctave/cruft/daspk/ddasic.f, liboctave/cruft/daspk/ddasid.f, liboctave/cruft/daspk/ddasik.f, liboctave/cruft/daspk/ddaspk.f, liboctave/cruft/daspk/ddstp.f, liboctave/cruft/daspk/ddwnrm.f, liboctave/cruft/daspk/dfnrmd.f, liboctave/cruft/daspk/dfnrmk.f, liboctave/cruft/daspk/dhels.f, liboctave/cruft/daspk/dheqr.f, liboctave/cruft/daspk/dinvwt.f, liboctave/cruft/daspk/dlinsd.f, liboctave/cruft/daspk/dlinsk.f, liboctave/cruft/daspk/dmatd.f, liboctave/cruft/daspk/dnedd.f, liboctave/cruft/daspk/dnedk.f, liboctave/cruft/daspk/dnsd.f, liboctave/cruft/daspk/dnsid.f, liboctave/cruft/daspk/dnsik.f, liboctave/cruft/daspk/dnsk.f, liboctave/cruft/daspk/dorth.f, liboctave/cruft/daspk/dslvd.f, liboctave/cruft/daspk/dslvk.f, liboctave/cruft/daspk/dspigm.f, liboctave/cruft/daspk/dyypnw.f, liboctave/cruft/dasrt/ddasrt.f, liboctave/cruft/dasrt/drchek.f, liboctave/cruft/dassl/ddaslv.f, liboctave/cruft/dassl/ddassl.f, liboctave/cruft/misc/blaswrap.c, liboctave/cruft/misc/module.mk, liboctave/cruft/odepack/cfode.f, liboctave/cruft/odepack/dlsode.f, liboctave/cruft/odepack/ewset.f, liboctave/cruft/odepack/intdy.f, liboctave/cruft/odepack/prepj.f, liboctave/cruft/odepack/sintdy.f, liboctave/cruft/odepack/slsode.f, liboctave/cruft/odepack/solsy.f, liboctave/cruft/odepack/ssolsy.f, liboctave/cruft/odepack/stode.f, liboctave/cruft/odepack/vnorm.f, liboctave/cruft/ranlib/Basegen.doc, liboctave/cruft/ranlib/README, liboctave/cruft/ranlib/genbet.f, liboctave/cruft/ranlib/genexp.f, liboctave/cruft/ranlib/gennch.f, liboctave/cruft/ranlib/gennf.f, liboctave/cruft/ranlib/gennor.f, liboctave/cruft/ranlib/getsd.f, liboctave/cruft/ranlib/initgn.f, liboctave/cruft/ranlib/phrtsd.f, liboctave/cruft/ranlib/randlib.fdoc, liboctave/cruft/ranlib/setsd.f, liboctave/cruft/ranlib/tstgmn.for, liboctave/cruft/ranlib/tstmid.for, liboctave/cruft/slatec-fn/atanh.f, liboctave/cruft/slatec-fn/datanh.f, liboctave/cruft/slatec-fn/xgmainc.f, liboctave/cruft/slatec-fn/xsgmainc.f, liboctave/numeric/module.mk, liboctave/operators/mk-ops.awk, liboctave/operators/mx-ops, liboctave/operators/sparse-mk-ops.awk, liboctave/operators/sparse-mx-ops, liboctave/operators/vx-ops, liboctave/util/module.mk, run-octave.in, scripts/@ftp/ftp.m, scripts/audio/wavread.m, scripts/deprecated/java_convert_matrix.m, scripts/deprecated/java_debug.m, scripts/deprecated/java_invoke.m, scripts/deprecated/java_new.m, scripts/deprecated/java_unsigned_conversion.m, scripts/deprecated/javafields.m, scripts/deprecated/javamethods.m, scripts/deprecated/shell_cmd.m, scripts/general/accumarray.m, scripts/general/display.m, scripts/general/fieldnames.m, scripts/general/interp1.m, scripts/general/interp2.m, scripts/general/interp3.m, scripts/general/isa.m, scripts/general/methods.m, scripts/general/sortrows.m, scripts/geometry/convhull.m, scripts/geometry/delaunay.m, scripts/geometry/delaunay3.m, scripts/geometry/delaunayn.m, scripts/geometry/griddata.m, scripts/geometry/griddatan.m, scripts/geometry/voronoi.m, scripts/geometry/voronoin.m, scripts/gui/guihandles.m, scripts/gui/inputdlg.m, scripts/gui/listdlg.m, scripts/gui/msgbox.m, scripts/gui/questdlg.m, scripts/gui/uigetfile.m, scripts/gui/waitbar.m, scripts/gui/warndlg.m, scripts/help/doc.m, scripts/help/help.m, scripts/help/type.m, scripts/image/bone.m, scripts/image/cmpermute.m, scripts/image/cmunique.m, scripts/image/colorcube.m, scripts/image/colormap.m, scripts/image/contrast.m, scripts/image/gray2ind.m, scripts/image/image.m, scripts/image/imshow.m, scripts/image/ind2gray.m, scripts/image/jet.m, scripts/image/rgb2ntsc.m, scripts/image/spinmap.m, scripts/io/importdata.m, scripts/io/strread.m, scripts/io/textread.m, scripts/io/textscan.m, scripts/java/java_get.m, scripts/java/java_set.m, scripts/java/javaaddpath.m, scripts/java/javaclasspath.m, scripts/java/javamem.m, scripts/linear-algebra/linsolve.m, scripts/linear-algebra/qzhess.m, scripts/miscellaneous/debug.m, scripts/miscellaneous/desktop.m, scripts/miscellaneous/dir.m, scripts/miscellaneous/dos.m, scripts/miscellaneous/edit.m, scripts/miscellaneous/fact.m, scripts/miscellaneous/getappdata.m, scripts/miscellaneous/inputname.m, scripts/miscellaneous/license.m, scripts/miscellaneous/ls_command.m, scripts/miscellaneous/run.m, scripts/miscellaneous/setfield.m, scripts/miscellaneous/unix.m, scripts/miscellaneous/ver.m, scripts/mk-pkg-add, scripts/mkdoc.pl, scripts/optimization/fminsearch.m, scripts/optimization/optimset.m, scripts/optimization/sqp.m, scripts/pkg/pkg.m, scripts/pkg/private/create_pkgadddel.m, scripts/pkg/private/fix_depends.m, scripts/pkg/private/install.m, scripts/plot/appearance/axis.m, scripts/plot/appearance/box.m, scripts/plot/appearance/clabel.m, scripts/plot/appearance/daspect.m, scripts/plot/appearance/datetick.m, scripts/plot/appearance/grid.m, scripts/plot/appearance/legend.m, scripts/plot/appearance/orient.m, scripts/plot/appearance/shading.m, scripts/plot/appearance/text.m, scripts/plot/appearance/title.m, scripts/plot/appearance/xlabel.m, scripts/plot/appearance/ylabel.m, scripts/plot/appearance/zlabel.m, scripts/plot/draw/area.m, scripts/plot/draw/bar.m, scripts/plot/draw/barh.m, scripts/plot/draw/colorbar.m, scripts/plot/draw/contour.m, scripts/plot/draw/contour3.m, scripts/plot/draw/contourf.m, scripts/plot/draw/ellipsoid.m, scripts/plot/draw/errorbar.m, scripts/plot/draw/ezcontour.m, scripts/plot/draw/ezcontourf.m, scripts/plot/draw/ezmesh.m, scripts/plot/draw/ezpolar.m, scripts/plot/draw/fill.m, scripts/plot/draw/fplot.m, scripts/plot/draw/hist.m, scripts/plot/draw/meshc.m, scripts/plot/draw/meshz.m, scripts/plot/draw/pareto.m, scripts/plot/draw/patch.m, scripts/plot/draw/peaks.m, scripts/plot/draw/pie.m, scripts/plot/draw/pie3.m, scripts/plot/draw/plot.m, scripts/plot/draw/plotyy.m, scripts/plot/draw/private/__bar__.m, scripts/plot/draw/private/__contour__.m, scripts/plot/draw/private/__errplot__.m, scripts/plot/draw/private/__ezplot__.m, scripts/plot/draw/private/__patch__.m, scripts/plot/draw/private/__stem__.m, scripts/plot/draw/rectangle.m, scripts/plot/draw/ribbon.m, scripts/plot/draw/rose.m, scripts/plot/draw/scatter.m, scripts/plot/draw/scatter3.m, scripts/plot/draw/semilogx.m, scripts/plot/draw/shrinkfaces.m, scripts/plot/draw/sombrero.m, scripts/plot/draw/sphere.m, scripts/plot/draw/stairs.m, scripts/plot/draw/stem.m, scripts/plot/draw/stemleaf.m, scripts/plot/draw/surf.m, scripts/plot/draw/surface.m, scripts/plot/draw/surfc.m, scripts/plot/draw/surfl.m, scripts/plot/draw/surfnorm.m, scripts/plot/draw/tetramesh.m, scripts/plot/draw/trimesh.m, scripts/plot/draw/triplot.m, scripts/plot/draw/trisurf.m, scripts/plot/util/__gnuplot_drawnow__.m, scripts/plot/util/__plt_get_axis_arg__.m, scripts/plot/util/axes.m, scripts/plot/util/clf.m, scripts/plot/util/copyobj.m, scripts/plot/util/figure.m, scripts/plot/util/gcbo.m, scripts/plot/util/graphics_toolkit.m, scripts/plot/util/hggroup.m, scripts/plot/util/meshgrid.m, scripts/plot/util/newplot.m, scripts/plot/util/print.m, scripts/plot/util/private/__add_default_menu__.m, scripts/plot/util/private/__fltk_print__.m, scripts/plot/util/private/__gnuplot_print__.m, scripts/plot/util/private/__print_parse_opts__.m, scripts/plot/util/refreshdata.m, scripts/plot/util/subplot.m, scripts/polynomial/conv.m, scripts/polynomial/poly.m, scripts/polynomial/polyeig.m, scripts/polynomial/polyfit.m, scripts/polynomial/polyval.m, scripts/polynomial/private/__splinefit__.m, scripts/polynomial/spline.m, scripts/prefs/prefdir.m, scripts/prefs/preferences.m, scripts/prefs/private/prefsfile.m, scripts/prefs/rmpref.m, scripts/signal/freqz.m, scripts/signal/module.mk, scripts/sparse/eigs.m, scripts/sparse/pcg.m, scripts/sparse/private/__sprand_impl__.m, scripts/sparse/sprand.m, scripts/sparse/sprandn.m, scripts/sparse/spy.m, scripts/sparse/svds.m, scripts/specfun/expint.m, scripts/specfun/factor.m, scripts/special-matrix/gallery.m, scripts/special-matrix/hankel.m, scripts/special-matrix/toeplitz.m, scripts/startup/inputrc, scripts/statistics/base/kurtosis.m, scripts/statistics/base/moment.m, scripts/statistics/base/qqplot.m, scripts/statistics/base/var.m, scripts/statistics/distributions/betarnd.m, scripts/statistics/distributions/binoinv.m, scripts/statistics/distributions/binopdf.m, scripts/statistics/distributions/binornd.m, scripts/statistics/distributions/cauchy_rnd.m, scripts/statistics/distributions/chi2rnd.m, scripts/statistics/distributions/discrete_pdf.m, scripts/statistics/distributions/discrete_rnd.m, scripts/statistics/distributions/empirical_rnd.m, scripts/statistics/distributions/exprnd.m, scripts/statistics/distributions/frnd.m, scripts/statistics/distributions/gamrnd.m, scripts/statistics/distributions/geornd.m, scripts/statistics/distributions/hygernd.m, scripts/statistics/distributions/kolmogorov_smirnov_cdf.m, scripts/statistics/distributions/laplace_cdf.m, scripts/statistics/distributions/laplace_pdf.m, scripts/statistics/distributions/logistic_cdf.m, scripts/statistics/distributions/logistic_pdf.m, scripts/statistics/distributions/lognrnd.m, scripts/statistics/distributions/nbincdf.m, scripts/statistics/distributions/nbininv.m, scripts/statistics/distributions/nbinpdf.m, scripts/statistics/distributions/nbinrnd.m, scripts/statistics/distributions/normrnd.m, scripts/statistics/distributions/poissinv.m, scripts/statistics/distributions/poissrnd.m, scripts/statistics/distributions/tinv.m, scripts/statistics/distributions/trnd.m, scripts/statistics/distributions/unidcdf.m, scripts/statistics/distributions/unidpdf.m, scripts/statistics/distributions/unidrnd.m, scripts/statistics/distributions/unifrnd.m, scripts/statistics/distributions/wblrnd.m, scripts/statistics/models/module.mk, scripts/statistics/tests/kruskal_wallis_test.m, scripts/strings/base2dec.m, scripts/strings/deblank.m, scripts/strings/dec2base.m, scripts/strings/dec2bin.m, scripts/strings/dec2hex.m, scripts/strings/mat2str.m, scripts/strings/ostrsplit.m, scripts/strings/regexptranslate.m, scripts/strings/str2num.m, scripts/strings/strcat.m, scripts/strings/strjoin.m, scripts/strings/strsplit.m, scripts/strings/strtok.m, scripts/strings/strtrim.m, scripts/strings/strtrunc.m, scripts/strings/substr.m, scripts/testfun/__run_test_suite__.m, scripts/testfun/speed.m, scripts/testfun/test.m, scripts/time/asctime.m, scripts/time/datenum.m, scripts/time/datevec.m, scripts/time/weekday.m, src/Makefile.am, test/Makefile.am, test/build-bc-overload-tests.sh, test/build-sparse-tests.sh, test/jit.tst, test/line-continue.tst: Strip trailing whitespace.
author John W. Eaton <jwe@octave.org>
date Tue, 20 Jan 2015 08:26:57 -0500
parents d63878346099
children 4197fc428c7d
comparison
equal deleted inserted replaced
19488:8dbd55742112 19627:446c46af4b42
5 @c 5 @c
6 @c Octave is free software; you can redistribute it and/or modify it 6 @c Octave is free software; you can redistribute it and/or modify it
7 @c under the terms of the GNU General Public License as published by the 7 @c under the terms of the GNU General Public License as published by the
8 @c Free Software Foundation; either version 3 of the License, or (at 8 @c Free Software Foundation; either version 3 of the License, or (at
9 @c your option) any later version. 9 @c your option) any later version.
10 @c 10 @c
11 @c Octave is distributed in the hope that it will be useful, but WITHOUT 11 @c Octave is distributed in the hope that it will be useful, but WITHOUT
12 @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 @c for more details. 14 @c for more details.
15 @c 15 @c
16 @c You should have received a copy of the GNU General Public License 16 @c You should have received a copy of the GNU General Public License
17 @c along with Octave; see the file COPYING. If not, see 17 @c along with Octave; see the file COPYING. If not, see
18 @c <http://www.gnu.org/licenses/>. 18 @c <http://www.gnu.org/licenses/>.
19 19
20 @c FIXME 20 @c FIXME
180 180
181 @noindent 181 @noindent
182 Note that in the display method, it makes sense to start the method 182 Note that in the display method, it makes sense to start the method
183 with the line @code{fprintf ("%s =", inputname (1))} to be consistent 183 with the line @code{fprintf ("%s =", inputname (1))} to be consistent
184 with the rest of Octave and print the variable name to be displayed 184 with the rest of Octave and print the variable name to be displayed
185 when displaying the class. 185 when displaying the class.
186 186
187 To be consistent with the Octave graphic handle classes, a class 187 To be consistent with the Octave graphic handle classes, a class
188 should also define the @code{get} and @code{set} methods. The 188 should also define the @code{get} and @code{set} methods. The
189 @code{get} method should accept one or two arguments, and given one 189 @code{get} method should accept one or two arguments, and given one
190 argument of the appropriate class it should return a structure with 190 argument of the appropriate class it should return a structure with
194 @EXAMPLEFILE(@polynomial/get.m) 194 @EXAMPLEFILE(@polynomial/get.m)
195 @end example 195 @end example
196 196
197 @noindent 197 @noindent
198 Similarly, the @code{set} method should taken as its first argument an 198 Similarly, the @code{set} method should taken as its first argument an
199 object to modify, and then take property/value pairs to be modified. 199 object to modify, and then take property/value pairs to be modified.
200 200
201 @example 201 @example
202 @EXAMPLEFILE(@polynomial/set.m) 202 @EXAMPLEFILE(@polynomial/set.m)
203 @end example 203 @end example
204 204
255 @end menu 255 @end menu
256 256
257 @node Defining Indexing And Indexed Assignment 257 @node Defining Indexing And Indexed Assignment
258 @subsection Defining Indexing And Indexed Assignment 258 @subsection Defining Indexing And Indexed Assignment
259 259
260 Objects can be indexed with parentheses, either like 260 Objects can be indexed with parentheses, either like
261 @code{@var{a} (@var{idx})} or like @code{@var{a} @{@var{idx}@}}, or even 261 @code{@var{a} (@var{idx})} or like @code{@var{a} @{@var{idx}@}}, or even
262 like @code{@var{a} (@var{idx}).@var{field}}. However, it is up to the user 262 like @code{@var{a} (@var{idx}).@var{field}}. However, it is up to the user
263 to decide what this indexing actually means. In the case of our polynomial 263 to decide what this indexing actually means. In the case of our polynomial
264 class @code{@var{p} (@var{n})} might mean either the coefficient of the 264 class @code{@var{p} (@var{n})} might mean either the coefficient of the
265 @var{n}-th power of the polynomial, or it might be the evaluation of the 265 @var{n}-th power of the polynomial, or it might be the evaluation of the
266 polynomial at @var{n}. The meaning of this subscripted referencing is 266 polynomial at @var{n}. The meaning of this subscripted referencing is
267 determined by the @code{subsref} method. 267 determined by the @code{subsref} method.
268 268
269 @DOCSTRING(subsref) 269 @DOCSTRING(subsref)
270 270
271 For example we might decide that indexing with @qcode{"()"} evaluates the 271 For example we might decide that indexing with @qcode{"()"} evaluates the
275 275
276 @example 276 @example
277 @EXAMPLEFILE(@polynomial/subsref.m) 277 @EXAMPLEFILE(@polynomial/subsref.m)
278 @end example 278 @end example
279 279
280 The equivalent functionality for subscripted assignments uses the 280 The equivalent functionality for subscripted assignments uses the
281 @code{subsasgn} method. 281 @code{subsasgn} method.
282 282
283 @DOCSTRING(subsasgn) 283 @DOCSTRING(subsasgn)
284 284
285 @DOCSTRING(optimize_subsasgn_calls) 285 @DOCSTRING(optimize_subsasgn_calls)
288 whole index chain, while they usually handle only the first element. It is the 288 whole index chain, while they usually handle only the first element. It is the
289 responsibility of these methods to handle the rest of the chain (if needed), 289 responsibility of these methods to handle the rest of the chain (if needed),
290 usually by forwarding it again to @code{subsref} or @code{subsasgn}. 290 usually by forwarding it again to @code{subsref} or @code{subsasgn}.
291 291
292 If you wish to use the @code{end} keyword in subscripted expressions 292 If you wish to use the @code{end} keyword in subscripted expressions
293 of an object, then the user needs to define the @code{end} method for 293 of an object, then the user needs to define the @code{end} method for
294 the class. For example, the @code{end} method for our polynomial class might 294 the class. For example, the @code{end} method for our polynomial class might
295 look like 295 look like
296 296
297 @example 297 @example
298 @group 298 @group
300 @end group 300 @end group
301 @end example 301 @end example
302 302
303 @noindent 303 @noindent
304 which is a fairly generic @code{end} method that has a behavior similar to 304 which is a fairly generic @code{end} method that has a behavior similar to
305 the @code{end} keyword for Octave Array classes. It can then be used as 305 the @code{end} keyword for Octave Array classes. It can then be used as
306 follows: 306 follows:
307 307
308 @example 308 @example
309 @group 309 @group
310 p = polynomial ([1,2,3,4]); 310 p = polynomial ([1,2,3,4]);
324 @DOCSTRING(colon) 324 @DOCSTRING(colon)
325 325
326 @node Indexed Assignment Optimization 326 @node Indexed Assignment Optimization
327 @subsection Indexed Assignment Optimization 327 @subsection Indexed Assignment Optimization
328 328
329 Octave's ubiquitous lazily-copied pass-by-value semantics implies 329 Octave's ubiquitous lazily-copied pass-by-value semantics implies
330 a problem for performance of user-defined subsasgn methods. Imagine 330 a problem for performance of user-defined subsasgn methods. Imagine
331 a call to subsasgn: 331 a call to subsasgn:
332 332
333 @example 333 @example
334 @group 334 @group
348 endfunction 348 endfunction
349 @end group 349 @end group
350 @end example 350 @end example
351 351
352 The problem is that on entry to the subsasgn method, @code{x} is still 352 The problem is that on entry to the subsasgn method, @code{x} is still
353 referenced from the caller's scope, which means that the method will 353 referenced from the caller's scope, which means that the method will
354 first need to unshare (copy) @code{x} and @code{x.myfield} before performing 354 first need to unshare (copy) @code{x} and @code{x.myfield} before performing
355 the assignment. Upon completing the call, unless an error occurs, 355 the assignment. Upon completing the call, unless an error occurs,
356 the result is immediately assigned to @code{x} in the caller's scope, 356 the result is immediately assigned to @code{x} in the caller's scope,
357 so that the previous value of @code{x.myfield} is forgotten. Hence, the 357 so that the previous value of @code{x.myfield} is forgotten. Hence, the
358 Octave language implies a copy of N elements (N being the size of 358 Octave language implies a copy of N elements (N being the size of
434 @noindent 434 @noindent
435 which allows polynomials to be plotted in the domain near the region 435 which allows polynomials to be plotted in the domain near the region
436 of the roots of the polynomial. 436 of the roots of the polynomial.
437 437
438 Functions that are of particular interest to be overloaded are the class 438 Functions that are of particular interest to be overloaded are the class
439 conversion functions such as @code{double}. Overloading these functions 439 conversion functions such as @code{double}. Overloading these functions
440 allows the @code{cast} function to work with the user class and can aid 440 allows the @code{cast} function to work with the user class and can aid
441 in the use of methods of other classes with the user class. An example 441 in the use of methods of other classes with the user class. An example
442 @code{double} function for our polynomial class might look like. 442 @code{double} function for our polynomial class might look like.
443 443
444 @example 444 @example
445 @group 445 @group
484 @cindex transpose 484 @cindex transpose
485 @cindex transpose, complex-conjugate 485 @cindex transpose, complex-conjugate
486 @cindex unary minus 486 @cindex unary minus
487 487
488 @c Need at least one plaintext sentence here between the @node and @float 488 @c Need at least one plaintext sentence here between the @node and @float
489 @c table below or the two will overlap due to a bug in Texinfo. 489 @c table below or the two will overlap due to a bug in Texinfo.
490 @c This is not our fault; this *is* a ridiculous kluge. 490 @c This is not our fault; this *is* a ridiculous kluge.
491 The following table shows, for each built-in numerical operation, the 491 The following table shows, for each built-in numerical operation, the
492 corresponding function name to use when providing an overloaded method for a 492 corresponding function name to use when providing an overloaded method for a
493 user class. 493 user class.
494 494
518 @opindex : 518 @opindex :
519 @opindex < 519 @opindex <
520 520
521 @tex 521 @tex
522 \vskip 6pt 522 \vskip 6pt
523 {\hbox to \hsize {\hfill\vbox{\offinterlineskip \tabskip=0pt 523 {\hbox to \hsize {\hfill\vbox{\offinterlineskip \tabskip=0pt
524 \halign{ 524 \halign{
525 \vrule height2.0ex depth1.ex width 0.6pt #\tabskip=0.3em & 525 \vrule height2.0ex depth1.ex width 0.6pt #\tabskip=0.3em &
526 # \hfil & \vrule # & # \hfil & \vrule # & # \hfil & # \vrule 526 # \hfil & \vrule # & # \hfil & \vrule # & # \hfil & # \vrule
527 width 0.6pt \tabskip=0pt\cr 527 width 0.6pt \tabskip=0pt\cr
528 \noalign{\hrule height 0.6pt} 528 \noalign{\hrule height 0.6pt}
529 & Operation && Method && Description &\cr 529 & Operation && Method && Description &\cr
530 \noalign{\hrule} 530 \noalign{\hrule}
531 & $a + b$ && plus (a, b) && Binary addition operator&\cr 531 & $a + b$ && plus (a, b) && Binary addition operator&\cr
639 @example 639 @example
640 @EXAMPLEFILE(@polynomial/polynomial_superiorto.m) 640 @EXAMPLEFILE(@polynomial/polynomial_superiorto.m)
641 @end example 641 @end example
642 642
643 Note that user classes always have higher precedence than built-in 643 Note that user classes always have higher precedence than built-in
644 Octave types. So in fact marking our polynomial class higher than the 644 Octave types. So in fact marking our polynomial class higher than the
645 @qcode{"double"} class is in fact not necessary. 645 @qcode{"double"} class is in fact not necessary.
646 646
647 When faced with two objects that have the same precedence, Octave will use the 647 When faced with two objects that have the same precedence, Octave will use the
648 method of the object that appears first on the list of arguments. 648 method of the object that appears first on the list of arguments.
649 649
728 octave:3> isa (f,"FIRfilter") 728 octave:3> isa (f,"FIRfilter")
729 ans = 1 729 ans = 1
730 octave:4> isa (f,"polynomial") 730 octave:4> isa (f,"polynomial")
731 ans = 1 731 ans = 1
732 octave:5> struct (f) 732 octave:5> struct (f)
733 ans = 733 ans =
734 @{ 734 @{
735 polynomial = 0.333333 + 0.333333 * X + 0.333333 * X ^ 2 735 polynomial = 0.333333 + 0.333333 * X + 0.333333 * X ^ 2
736 @} 736 @}
737 @end group 737 @end group
738 @end example 738 @end example