Next: , Previous: Character Strings in Oct-Files, Up: Oct-Files   [Contents][Index]


A.1.4 Cell Arrays in Oct-Files

Octave’s cell type is equally accessible within oct-files. A cell array is just an array of octave_values, and so each element of the cell array can then be treated just like any other octave_value. A simple example is

#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_values 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