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