comparison doc/interpreter/external.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 bcbd309bf272
children 0e1f5a750d00
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 @node External Code Interface 20 @node External Code Interface
127 * Calling External Code from Oct-Files:: 127 * Calling External Code from Oct-Files::
128 * Allocating Local Memory in Oct-Files:: 128 * Allocating Local Memory in Oct-Files::
129 * Input Parameter Checking in Oct-Files:: 129 * Input Parameter Checking in Oct-Files::
130 * Exception and Error Handling in Oct-Files:: 130 * Exception and Error Handling in Oct-Files::
131 * Documentation and Test of Oct-Files:: 131 * Documentation and Test of Oct-Files::
132 @c * Application Programming Interface for Oct-Files:: 132 @c * Application Programming Interface for Oct-Files::
133 @end menu 133 @end menu
134 134
135 @node Getting Started with Oct-Files 135 @node Getting Started with Oct-Files
136 @subsection Getting Started with Oct-Files 136 @subsection Getting Started with Oct-Files
137 137
153 @group 153 @group
154 @EXAMPLEFILE(helloworld.cc) 154 @EXAMPLEFILE(helloworld.cc)
155 @end group 155 @end group
156 @end example 156 @end example
157 157
158 The first critical line is @code{#include <octave/oct.h>} which 158 The first critical line is @code{#include <octave/oct.h>} which
159 makes available most of the definitions necessary for a C++ oct-file. 159 makes available most of the definitions necessary for a C++ oct-file.
160 Note that @file{octave/oct.h} is a C++ header and cannot be directly 160 Note that @file{octave/oct.h} is a C++ header and cannot be directly
161 @code{#include}'ed in a C source file, nor any other language. 161 @code{#include}'ed in a C source file, nor any other language.
162 162
163 Included by @file{oct.h} is a definition for the macro 163 Included by @file{oct.h} is a definition for the macro
737 SparseMatrix sm (nr, nc, 0); 737 SparseMatrix sm (nr, nc, 0);
738 sm(0,0) = 1; sm(0,1) = 2; sm(1,3) = 3; sm(2,3) = 4; 738 sm(0,0) = 1; sm(0,1) = 2; sm(1,3) = 3; sm(2,3) = 4;
739 @end group 739 @end group
740 @end example 740 @end example
741 741
742 @noindent 742 @noindent
743 is perfectly valid. However, it is a very bad idea because as each new 743 is perfectly valid. However, it is a very bad idea because as each new
744 element is added to the sparse matrix the matrix needs to request more 744 element is added to the sparse matrix the matrix needs to request more
745 space and reallocate memory. This is an expensive operation, that will 745 space and reallocate memory. This is an expensive operation, that will
746 significantly slow this means of creating a sparse matrix. Furthermore, 746 significantly slow this means of creating a sparse matrix. Furthermore,
747 it is possible to create a sparse matrix with too much storage, so having 747 it is possible to create a sparse matrix with too much storage, so having
748 @var{nz} greater than 4 is also valid. The disadvantage is that the matrix 748 @var{nz} greater than 4 is also valid. The disadvantage is that the matrix
749 occupies more memory than strictly needed. 749 occupies more memory than strictly needed.
750 750
751 It is not always possible to know the number of non-zero elements prior 751 It is not always possible to know the number of non-zero elements prior
752 to filling a matrix. For this reason the additional unused storage of 752 to filling a matrix. For this reason the additional unused storage of
753 a sparse matrix can be removed after its creation with the 753 a sparse matrix can be removed after its creation with the
754 @code{maybe_compress} function. In addition, @code{maybe_compress} can 754 @code{maybe_compress} function. In addition, @code{maybe_compress} can
755 deallocate the unused storage, but it can also remove zero elements 755 deallocate the unused storage, but it can also remove zero elements
756 from the matrix. The removal of zero elements from the matrix is 756 from the matrix. The removal of zero elements from the matrix is
757 controlled by setting the argument of the @code{maybe_compress} function 757 controlled by setting the argument of the @code{maybe_compress} function
868 @example 868 @example
869 @group 869 @group
870 octave_value_list retval; 870 octave_value_list retval;
871 871
872 SparseMatrix sm = args(0).sparse_matrix_value (); 872 SparseMatrix sm = args(0).sparse_matrix_value ();
873 SparseComplexMatrix scm = 873 SparseComplexMatrix scm =
874 args(1).sparse_complex_matrix_value (); 874 args(1).sparse_complex_matrix_value ();
875 SparseBoolMatrix sbm = args(2).sparse_bool_matrix_value (); 875 SparseBoolMatrix sbm = args(2).sparse_bool_matrix_value ();
876 @dots{} 876 @dots{}
877 retval(2) = sbm; 877 retval(2) = sbm;
878 retval(1) = scm; 878 retval(1) = scm;
1212 be taken into account. There are several possible solutions, but the most 1212 be taken into account. There are several possible solutions, but the most
1213 common is illustrated in the following example, 1213 common is illustrated in the following example,
1214 1214
1215 @example 1215 @example
1216 @group 1216 @group
1217 DEFUN_DLD (do_what_i_want, args, nargout, 1217 DEFUN_DLD (do_what_i_want, args, nargout,
1218 "-*- texinfo -*-\n\ 1218 "-*- texinfo -*-\n\
1219 @@deftypefn @{Function File@} @{@} do_what_i_say (@@var@{n@})\n\ 1219 @@deftypefn @{Function File@} @{@} do_what_i_say (@@var@{n@})\n\
1220 A function that does what the user actually wants rather\n\ 1220 A function that does what the user actually wants rather\n\
1221 than what they requested.\n\ 1221 than what they requested.\n\
1222 @@end deftypefn") 1222 @@end deftypefn")
1254 @end group 1254 @end group
1255 @end example 1255 @end example
1256 1256
1257 @c @node Application Programming Interface for Oct-Files 1257 @c @node Application Programming Interface for Oct-Files
1258 @c @subsection Application Programming Interface for Oct-Files 1258 @c @subsection Application Programming Interface for Oct-Files
1259 @c 1259 @c
1260 @c WRITE ME, using Coda section 1.3 as a starting point. 1260 @c WRITE ME, using Coda section 1.3 as a starting point.
1261 1261
1262 @node Mex-Files 1262 @node Mex-Files
1263 @section Mex-Files 1263 @section Mex-Files
1264 @cindex mex-files 1264 @cindex mex-files
1281 * Character Strings in Mex-Files:: 1281 * Character Strings in Mex-Files::
1282 * Cell Arrays with Mex-Files:: 1282 * Cell Arrays with Mex-Files::
1283 * Structures with Mex-Files:: 1283 * Structures with Mex-Files::
1284 * Sparse Matrices with Mex-Files:: 1284 * Sparse Matrices with Mex-Files::
1285 * Calling Other Functions in Mex-Files:: 1285 * Calling Other Functions in Mex-Files::
1286 @c * Application Programming Interface for Mex-Files:: 1286 @c * Application Programming Interface for Mex-Files::
1287 @end menu 1287 @end menu
1288 1288
1289 @node Getting Started with Mex-Files 1289 @node Getting Started with Mex-Files
1290 @subsection Getting Started with Mex-Files 1290 @subsection Getting Started with Mex-Files
1291 1291
1563 @code{mxCreateStructMatrix} which creates a structure array with a two 1563 @code{mxCreateStructMatrix} which creates a structure array with a two
1564 dimensional matrix, or @code{mxCreateStructArray}. 1564 dimensional matrix, or @code{mxCreateStructArray}.
1565 1565
1566 @example 1566 @example
1567 @group 1567 @group
1568 mxArray *mxCreateStructArray (int ndims, int *dims, 1568 mxArray *mxCreateStructArray (int ndims, int *dims,
1569 int num_keys, 1569 int num_keys,
1570 const char **keys); 1570 const char **keys);
1571 mxArray *mxCreateStructMatrix (int rows, int cols, 1571 mxArray *mxCreateStructMatrix (int rows, int cols,
1572 int num_keys, 1572 int num_keys,
1573 const char **keys); 1573 const char **keys);
1574 @end group 1574 @end group
1575 @end example 1575 @end example
1576 1576
1577 Accessing the fields of the structure can then be performed with 1577 Accessing the fields of the structure can then be performed with
1580 1580
1581 @example 1581 @example
1582 @group 1582 @group
1583 mxArray *mxGetField (const mxArray *ptr, mwIndex index, 1583 mxArray *mxGetField (const mxArray *ptr, mwIndex index,
1584 const char *key); 1584 const char *key);
1585 mxArray *mxGetFieldByNumber (const mxArray *ptr, 1585 mxArray *mxGetFieldByNumber (const mxArray *ptr,
1586 mwIndex index, int key_num); 1586 mwIndex index, int key_num);
1587 void mxSetField (mxArray *ptr, mwIndex index, 1587 void mxSetField (mxArray *ptr, mwIndex index,
1588 const char *key, mxArray *val); 1588 const char *key, mxArray *val);
1589 void mxSetFieldByNumber (mxArray *ptr, mwIndex index, 1589 void mxSetFieldByNumber (mxArray *ptr, mwIndex index,
1590 int key_num, mxArray *val); 1590 int key_num, mxArray *val);
1591 @end group 1591 @end group
1592 @end example 1592 @end example
1593 1593
1594 A difference between the oct-file interface to structures and the 1594 A difference between the oct-file interface to structures and the
1605 @end example 1605 @end example
1606 1606
1607 An example of the behavior of this function within Octave is then 1607 An example of the behavior of this function within Octave is then
1608 1608
1609 @example 1609 @example
1610 a(1).f1 = "f11"; a(1).f2 = "f12"; 1610 a(1).f1 = "f11"; a(1).f2 = "f12";
1611 a(2).f1 = "f21"; a(2).f2 = "f22"; 1611 a(2).f1 = "f21"; a(2).f2 = "f22";
1612 b = mystruct (a); 1612 b = mystruct (a);
1613 @result{} field f1(0) = f11 1613 @result{} field f1(0) = f11
1614 field f1(1) = f21 1614 field f1(1) = f21
1615 field f2(0) = f12 1615 field f2(0) = f12
1723 Note that it is not possible to use function handles or inline functions 1723 Note that it is not possible to use function handles or inline functions
1724 within a mex-file. 1724 within a mex-file.
1725 1725
1726 @c @node Application Programming Interface for Mex-Files 1726 @c @node Application Programming Interface for Mex-Files
1727 @c @subsection Application Programming Interface for Mex-Files 1727 @c @subsection Application Programming Interface for Mex-Files
1728 @c 1728 @c
1729 @c WRITE ME, refer to mex.h and mexproto.h 1729 @c WRITE ME, refer to mex.h and mexproto.h
1730 1730
1731 @node Standalone Programs 1731 @node Standalone Programs
1732 @section Standalone Programs 1732 @section Standalone Programs
1733 1733
1778 GCD of [10, 15] is 5 1778 GCD of [10, 15] is 5
1779 $ 1779 $
1780 @end group 1780 @end group
1781 @end example 1781 @end example
1782 1782
1783 It is worth noting that, if only built-in functions are to be called from 1783 It is worth noting that, if only built-in functions are to be called from
1784 a C++ standalone program, then it does not need to initialize the 1784 a C++ standalone program, then it does not need to initialize the
1785 interpreter to do so. The general rule is that, for a built-in 1785 interpreter to do so. The general rule is that, for a built-in
1786 function named @code{function_name} in the interpreter, there will be 1786 function named @code{function_name} in the interpreter, there will be
1787 a C++ function named @code{Ffunction_name} (note the prepended capital 1787 a C++ function named @code{Ffunction_name} (note the prepended capital
1788 @code{F}) accessible in the C++ API@. The declarations for all built-in 1788 @code{F}) accessible in the C++ API@. The declarations for all built-in
1789 functions are collected in the header file @code{builtin-defun-decls.h}. 1789 functions are collected in the header file @code{builtin-defun-decls.h}.
1790 This feature should be used with care as the list of built-in functions can 1790 This feature should be used with care as the list of built-in functions can
1791 change. No guarantees can be made that a function that is currently built in 1791 change. No guarantees can be made that a function that is currently built in
1792 won't be implemented as a .m file or as a dynamically linked function in the 1792 won't be implemented as a .m file or as a dynamically linked function in the
1793 future. An example of how to call built-in functions from C++ can be seen in the 1793 future. An example of how to call built-in functions from C++ can be seen in the
1801 which, again, is compiled and run as a standalone application with 1801 which, again, is compiled and run as a standalone application with
1802 1802
1803 @example 1803 @example
1804 @group 1804 @group
1805 $ mkoctfile --link-stand-alone standalonebuiltin.cc -o standalonebuiltin 1805 $ mkoctfile --link-stand-alone standalonebuiltin.cc -o standalonebuiltin
1806 $ ./standalonebuiltin 1806 $ ./standalonebuiltin
1807 This is a matrix: 1807 This is a matrix:
1808 11 12 1808 11 12
1809 21 22 1809 21 22
1810 1810
1811 This is the norm of the matrix: 1811 This is the norm of the matrix: