(octave.info)Cell Arrays in Oct-Files


Next: Structures in Oct-Files Prev: Character Strings in Oct-Files Up: Oct-Files
Enter node , (file) or (file)node

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


automatically generated by info2www version 1.2.2.9