diff src/variables.cc @ 9240:f27a8c07f0b2

clear -classes and support. * ov-class.h (octave_class::clear_exemplar_map): New function. * ov-class.cc (octave_class::clear_exemplar_map): New function. * symtab.h (symbol_record::clear_objects): New function * symtab.h (symbol_record::do_clear_objects): New function * variables.cc (do_matlab_compatible_clear, clear): Added classes option
author Robert T. Short <octave@phaselockedsystems.com>
date Thu, 21 May 2009 14:26:47 -0700
parents 2669527e0ce5
children 80c299c84796
line wrap: on
line diff
--- a/src/variables.cc	Fri May 22 10:46:13 2009 +0200
+++ b/src/variables.cc	Thu May 21 14:26:47 2009 -0700
@@ -52,6 +52,7 @@
 #include "oct-map.h"
 #include "oct-obj.h"
 #include "ov.h"
+#include "ov-class.h"
 #include "ov-usr-fcn.h"
 #include "pager.h"
 #include "parse.h"
@@ -1993,6 +1994,12 @@
 	{
 	  symbol_table::clear_variables ();
 	}
+      else if (argv[idx] == "classes"
+	       && ! symbol_table::is_local_variable ("classes"))
+	{
+	  symbol_table::clear_objects ();
+	  octave_class::clear_exemplar_map ();
+	}
       else
 	{
 	  symbol_table::clear_symbol_pattern (argv[idx]);
@@ -2066,6 +2073,8 @@
 Clears the global symbol names.\n\
 @item -variables, -v\n\
 Clears the local variable names.\n\
+@item -classes, -c\n\
+Clears the class structure table and clears all objects.\n\
 @item -regexp, -r\n\
 The arguments are treated as regular expressions as any variables that\n\
 match will be cleared.\n\
@@ -2094,6 +2103,7 @@
 	  bool clear_functions = false;
 	  bool clear_globals = false;
 	  bool clear_variables = false;
+          bool clear_objects = false;
 	  bool exclusive = false;
 	  bool have_regexp = false;
 	  bool have_dash_option = false;
@@ -2133,6 +2143,13 @@
 		  have_dash_option = true;
 		  clear_variables = true;
 		}
+	      else if (argv[idx] == "-classes" || argv[idx] == "-c")
+		{
+		  CLEAR_OPTION_ERROR (have_dash_option && ! exclusive);
+
+		  have_dash_option = true;
+		  clear_objects = true;
+		}
 	      else if (argv[idx] == "-regexp" || argv[idx] == "-r")
 		{
 		  CLEAR_OPTION_ERROR (have_dash_option && ! exclusive);
@@ -2178,6 +2195,11 @@
 		    {
 		      do_clear_variables (argv, argc, idx, exclusive);
 		    }
+		  else if (clear_objects)
+		    {
+		      symbol_table::clear_objects ();
+		      octave_class::clear_exemplar_map ();
+		    }
 		  else
 		    {
 		      do_clear_symbols (argv, argc, idx, exclusive);