Add load command to interactive stop.
Support decimal constants passed interactive to system tasks.
This commit is contained in:
parent
177b6ffb6a
commit
efef8fba85
50
vvp/stop.cc
50
vvp/stop.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: stop.cc,v 1.10 2003/11/07 05:58:02 steve Exp $"
|
#ident "$Id: stop.cc,v 1.11 2004/02/21 00:44:34 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -83,7 +83,8 @@ static void cmd_call(unsigned argc, char*argv[])
|
||||||
if (stop_current_scope && (strcmp(argv[idx+1], ".") == 0))
|
if (stop_current_scope && (strcmp(argv[idx+1], ".") == 0))
|
||||||
handle = &stop_current_scope->base;
|
handle = &stop_current_scope->base;
|
||||||
|
|
||||||
if (argv[idx+1][0] == '"') {
|
/* Is the argument a quoted string? */
|
||||||
|
if (handle == 0 && argv[idx+1][0] == '"') {
|
||||||
char*tmp = strdup(argv[idx+1]);
|
char*tmp = strdup(argv[idx+1]);
|
||||||
tmp[strlen(tmp)-1] = 0;
|
tmp[strlen(tmp)-1] = 0;
|
||||||
|
|
||||||
|
|
@ -95,6 +96,13 @@ static void cmd_call(unsigned argc, char*argv[])
|
||||||
free(tmp);
|
free(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Is the argument a decimal constant? */
|
||||||
|
if (handle == 0
|
||||||
|
&& strspn(argv[idx+1],"0123456789") == strlen(argv[idx+1])) {
|
||||||
|
handle = vpip_make_dec_const(strtol(argv[idx+1],0,10));
|
||||||
|
add_to_free_list = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Try to find the vpiHandle within this scope that has
|
/* Try to find the vpiHandle within this scope that has
|
||||||
the name in argv[idx+2]. Look in the current scope. */
|
the name in argv[idx+2]. Look in the current scope. */
|
||||||
|
|
||||||
|
|
@ -199,6 +207,26 @@ static void cmd_list(unsigned, char*[])
|
||||||
printf("module : %s\n", scope->name);
|
printf("module : %s\n", scope->name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case vpiTask:
|
||||||
|
scope = (struct __vpiScope*) table[idx];
|
||||||
|
printf("task : %s\n", scope->name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case vpiFunction:
|
||||||
|
scope = (struct __vpiScope*) table[idx];
|
||||||
|
printf("function: %s\n", scope->name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case vpiNamedBegin:
|
||||||
|
scope = (struct __vpiScope*) table[idx];
|
||||||
|
printf("block : %s\n", scope->name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case vpiNamedFork:
|
||||||
|
scope = (struct __vpiScope*) table[idx];
|
||||||
|
printf("fork : %s\n", scope->name);
|
||||||
|
break;
|
||||||
|
|
||||||
case vpiParameter:
|
case vpiParameter:
|
||||||
printf("param : %s\n", vpi_get_str(vpiName, table[idx]));
|
printf("param : %s\n", vpi_get_str(vpiName, table[idx]));
|
||||||
break;
|
break;
|
||||||
|
|
@ -234,6 +262,16 @@ static void cmd_list(unsigned, char*[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cmd_load(unsigned argc, char*argv[])
|
||||||
|
{
|
||||||
|
unsigned idx;
|
||||||
|
|
||||||
|
for (idx = 1 ; idx < argc ; idx += 1) {
|
||||||
|
printf("Loading module %s...\n", argv[idx]);
|
||||||
|
vpip_load_module(argv[idx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void cmd_pop(unsigned, char*[])
|
static void cmd_pop(unsigned, char*[])
|
||||||
{
|
{
|
||||||
if (stop_current_scope != 0)
|
if (stop_current_scope != 0)
|
||||||
|
|
@ -330,6 +368,10 @@ struct {
|
||||||
"Get help."},
|
"Get help."},
|
||||||
{ "list", &cmd_list,
|
{ "list", &cmd_list,
|
||||||
"List items in the current scope."},
|
"List items in the current scope."},
|
||||||
|
{ "load", &cmd_load,
|
||||||
|
"Load a VPI module, a la vvp -m."},
|
||||||
|
{ "ls", &cmd_list,
|
||||||
|
"Shorthand for \"list\"."},
|
||||||
{ "pop", &cmd_pop,
|
{ "pop", &cmd_pop,
|
||||||
"Pop one scope from the scope stack."},
|
"Pop one scope from the scope stack."},
|
||||||
{ "push", &cmd_push,
|
{ "push", &cmd_push,
|
||||||
|
|
@ -452,6 +494,10 @@ void stop_handler(int rc)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: stop.cc,v $
|
* $Log: stop.cc,v $
|
||||||
|
* Revision 1.11 2004/02/21 00:44:34 steve
|
||||||
|
* Add load command to interactive stop.
|
||||||
|
* Support decimal constants passed interactive to system tasks.
|
||||||
|
*
|
||||||
* Revision 1.10 2003/11/07 05:58:02 steve
|
* Revision 1.10 2003/11/07 05:58:02 steve
|
||||||
* Fix conditional compilation of readline history.
|
* Fix conditional compilation of readline history.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue