diff src/data.cc @ 1402:6550c74777b9

[project @ 1995-09-15 04:27:57 by jwe]
author jwe
date Fri, 15 Sep 1995 04:32:14 +0000
parents ed5757e3333b
children 89c587478067
line wrap: on
line diff
--- a/src/data.cc
+++ b/src/data.cc
@@ -741,6 +741,41 @@
   return retval;
 }
 
+DEFUN ("struct_elements", Fstruct_elements, Sstruct_elements, 1, 1,
+  "struct_elements (S)\n\
+\n\
+Return a list of the names of the elements of the structure S.")
+{
+  Octave_object retval;
+
+  int nargin = args.length ();
+
+  if (nargin == 1)
+    {
+      if (args (0).is_map ())
+	{
+	  Octave_map m = args(0).map_value ();
+	  char **names = m.make_name_list ();
+	  Octave_str_obj list (m.length ());
+	  char **ptr = names;
+	  int i = 0;
+	  while (*ptr)
+	    {
+	      list(i++) = *ptr;
+	      delete [] *ptr++;
+	    }
+	  delete [] names;
+	  retval(0) = list;
+	}
+      else
+	gripe_wrong_type_arg ("struct_elements", args (0));
+    }
+  else
+    print_usage ("struct_elements");
+
+  return retval;
+}
+
 DEFUN ("struct_contains", Fstruct_contains, Sstruct_contains, 1, 2,
   "struct_contains (S, NAME)\n\
 \n\