# HG changeset patch # User dbateman # Date 1179571017 0 # Node ID c9c504d939c513aeab5a18d8f8b3bd033648f4af # Parent 8c2fff7b50b0e4f59a6f87df28a37c34673636fe [project @ 2007-05-19 10:36:56 by dbateman] diff --git a/doc/ChangeLog b/doc/ChangeLog --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,6 +1,11 @@ +2007-05-19 David Bateman + + * interpreter/func.txi: Additional documentation for function + locking, dispatch and autoloading. + 2007-05-16 Søren Hauberg - * interpreter/expr.txi: Imrove docs. + * interpreter/expr.txi: Improve docs. 2007-05-14 John W. Eaton diff --git a/doc/interpreter/func.txi b/doc/interpreter/func.txi --- a/doc/interpreter/func.txi +++ b/doc/interpreter/func.txi @@ -599,12 +599,6 @@ @DOCSTRING(mfilename) -@DOCSTRING(mlock) - -@DOCSTRING(munlock) - -@DOCSTRING(mislocked) - @DOCSTRING(addpath) @DOCSTRING(genpath) @@ -625,14 +619,11 @@ @DOCSTRING(ignore_function_time_stamp) -@DOCSTRING(autoload) - -@DOCSTRING(builtin) - -@DOCSTRING(dispatch) @menu * Subfunctions:: +* Overloading and Autoloading:: +* Function Locking:: @end menu @node Subfunctions @@ -664,6 +655,72 @@ function @code{f} or from the other subfunctions, but not from outside the file @file{f.m}. +@node Overloading and Autoloading +@subsection Overloading and Autoloading + +The @code{dispatch} function can be used to alias one function name to +another. It can be used to alias all calls to a particular function name +to another function, or the alias can be limited to only a particular +variable type. Consider the example + +@example +@group +function y = spsin (x) + printf ("Calling spsin\n"); + fflush(stdout); + y = spfun ("sin", x); +endfunction + +dispatch ("sin", "spsin", "sparse matrix"); +y0 = sin(eye(3)); +y1 = sin(speye(3)); +@end group +@end example + +@noindent +Which aliases the @code{spsin} to @code{sin}, but only for real sparse +matrices. Note that the builtin @code{sin} already correctly treats +sparse matrices and so this example is only illustrative. + +@DOCSTRING(dispatch) + +@DOCSTRING(builtin) + +A single dynamically linked file might define several +functions. However, as Octave searches for functions based on the +functions filename, Octave needs a manner in which to find each of the +functions in the dynamically linked file. On operating systems that +support symbolic links, it is possible to create a symbolic link to the +original file for each of the functions which it contains. + +However, there is at least one well known operating system that doesn't +support symbolic links. Making copies of the original file for each of +the functions is also possible, but is undesirable as it multiples the +amount of disk space used by Octave. Instead Octave supplies the +@code{autoload} function, that permits the user to define in which +file a certain function will be found. + +@DOCSTRING(autoload) + +@node Function Locking +@subsection Function Locking + +It is sometime desirable to lock a function into memory with the +@code{mlock} function. This is typically used for dynamically linked +functions in Oct-files or mex-files, that contain some initialization, +and it is desireable that a @code{clear} does not remove this +initialization. + +This might equally be used to prevent changes to a function from having +effect in Octave, though a similar effect can be had with the +@code{ignore_function_time_stamp} function. + +@DOCSTRING(mlock) + +@DOCSTRING(munlock) + +@DOCSTRING(mislocked) + @node Script Files @section Script Files diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2007-05-19 David Bateman + + * ov-fcn-inline.cc (Fvectorize): Doc fix. + 2007-05-16 Søren Hauberg * ov.cc (Fsubsref, Fsubsasgn): Doc fix. diff --git a/src/ov-fcn-inline.cc b/src/ov-fcn-inline.cc --- a/src/ov-fcn-inline.cc +++ b/src/ov-fcn-inline.cc @@ -809,7 +809,7 @@ DEFUN (vectorize, args, , "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} argnames (@var{fun})\n\ +@deftypefn {Built-in Function} {} vectorize (@var{fun})\n\ Create a vectorized version of the inline function @var{fun}\n\ by replacing all occurrences of @code{*}, @code{/}, etc., with\n\ @code{.*}, @code{./}, etc.\n\