changeset 1637:a2174428d418 octave-forge

Preserve command status through dispatch
author pkienzle
date Wed, 11 Aug 2004 03:06:12 +0000
parents 6ea4249059b2
children 66c0c17809eb
files main/miscellaneous/dispatch.cc
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/main/miscellaneous/dispatch.cc	Wed Aug 11 00:57:02 2004 +0000
+++ b/main/miscellaneous/dispatch.cc	Wed Aug 11 03:06:12 2004 +0000
@@ -348,6 +348,9 @@
   symbol_record *sr = fbi_sym_tab->lookup(f,true);
   if (sr->def().type_id() != octave_dispatch::static_type_id())
     {
+      // Preserve mark_as_command status
+      bool iscommand = sr->is_command();
+
       // Not an overloaded name, so if only display or clear then we are done
       if ( t.empty() ) return;
 
@@ -386,9 +389,9 @@
       // Create a symbol record for the dispatch object.
       sr = fbi_sym_tab->lookup(f,true);
       sr->unprotect();
-      // XXX FIXME XXX TEXT_FUNCTION was renamed to COMMAND == 16
-      sr->define(octave_value(dispatch),
-			     symbol_record::BUILTIN_FUNCTION|16); 
+      sr->define(octave_value(dispatch), symbol_record::BUILTIN_FUNCTION); 
+      // std::cout << "iscommand('"<<f<<"')=" << iscommand << std::endl;
+      if (iscommand) sr->mark_as_command();
       sr->document(basedoc + "\n\nOverloaded function\n");
       sr->make_eternal(); // XXX FIXME XXX why??
       sr->mark_as_static();
@@ -482,6 +485,9 @@
 %! assert(hello(3i),1+3i)
 %!test 
 %! system("rm dispatch_y.m");
+
+XXX FIXME XXX add tests for preservation of mark_as_command status.
+
 */
 
 DEFUN_DLD(dispatch, args, , "\