octave: Cell Arrays in Oct-Files
A.1.4 Cell Arrays in Oct-Files
------------------------------
Octave’s cell type is also available from within oct-files. A cell
array is just an ‘Array’ of ‘octave_value’s, and thus each element of
the cell array can be treated like any other ‘octave_value’. A simple
example is
#include <octave/oct.h>
#include <octave/Cell.h>
DEFUN_DLD (celldemo, args, , "Cell Demo")
{
if (args.length () != 1)
print_usage ();
Cell c = args(0).cell_value ();
octave_value_list retval;
retval.resize (c.numel ()); // faster code by pre-declaring size
for (octave_idx_type i = 0; i < c.numel (); i++)
{
retval(i) = c(i); // using operator syntax
//retval(i) = c.elem (i); // using method syntax
}
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
the example extracts the ‘octave_value’s one by one from the cell array
and returns them as individual output arguments. For example:
[b1, b2, b3] = celldemo ({1, [1, 2], "test"})
⇒
b1 = 1
b2 =
1 2
b3 = test