Change of current context ? (whos -file ...)

David Bateman David.Bateman at motorola.com
Mon Sep 22 09:01:23 CDT 2008


I just thought of a way to easily implement "whos -file", but I'm having 
issues with the use of the new symbol table code. What I thought to do 
was something like


      if (argv[i] == "-file")
    {
      if (i == argc - 1)
        error ("whos: -file argument must be followed by a file name");
      else
        {
          std::string nm = argv [i + 1];

          symbol_table::scope_id tmp_scope = symbol_table::alloc_scope ();

          unwind_protect::begin_frame ("do_who_file");

          symbol_table::push_scope (tmp_scope);

          unwind_protect::add (symbol_table::pop_scope);

          feval ("load", octave_value (nm), 0);

          std::string newmsg = std::string ("Variables in the file ") +
        nm + ":\n\n";

          if (!error_state)
        retval =  do_who (i - 1, argv, return_list, verbose, newmsg);

          unwind_protect::run_frame ("do_who_file");

          symbol_table::erase_scope (tmp_scope);
        }

      return retval;
    }

That if the -file flag is given treats the following argument as a file 
name, and all following arguments are dropped, a new context is created 
the file is loaded to this context and who is rerun within this 
temporary context.

However, the above doesn't seem to be the correct manner to push/pop the 
current context. Anyone see what I'm missing?

D.


-- 
David Bateman                                David.Bateman at motorola.com
Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph) 
Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob) 
91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax) 

The information contained in this communication has been classified as: 

[x] General Business Information 
[ ] Motorola Internal Use Only 
[ ] Motorola Confidential Proprietary



More information about the Octave-maintainers mailing list