Next: Structures in Oct-Files, Previous: Character Strings in Oct-Files, Up: Oct-Files
Octave's cell type is equally accessible within oct-files. A cell
array is just an array of octave_value
s, and so each element of the cell
array can then be treated just like any other octave_value
. A simple
example is
/* Copyright (C) 2006, 2007 John W. Eaton This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #include <octave/oct.h> #include <octave/Cell.h> DEFUN_DLD (celldemo, args, , "Cell Demo") { octave_value_list retval; int nargin = args.length (); if (nargin != 1) print_usage (); else { Cell c = args (0).cell_value (); if (! error_state) for (octave_idx_type i = 0; i < c.nelem (); i++) retval(i) = c.elem (i); } return retval; }
Note that cell arrays are used less often in standard oct-files and so
the Cell.h header file must be explicitly included. The rest of this
example extracts the octave_value
s one by one from the cell array and
returns be as individual return arguments. For example consider
[b1, b2, b3] = celldemo ({1, [1, 2], "test"}) => b1 = 1 b2 = 1 2 b3 = test