X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fcmd.src%2Fshow.cc;h=8f6fee137ca68aca471c684122bdcb921cff32e2;hb=f27da39dbcab5678aca6d8462f1cc37a643f37e9;hp=9833d2b8e4a2eb3284f03b30d7cca3d201ca3ed1;hpb=0e1bba0730e55b3d40c1c644d94befc99c87270d;p=fw%2Fsdcc diff --git a/sim/ucsim/cmd.src/show.cc b/sim/ucsim/cmd.src/show.cc index 9833d2b8..8f6fee13 100644 --- a/sim/ucsim/cmd.src/show.cc +++ b/sim/ucsim/cmd.src/show.cc @@ -26,11 +26,14 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA /*@1@*/ #include "ddconfig.h" + +#include #include "i_string.h" // prj #include "globals.h" #include "utils.h" +#include "errorcl.h" // sim #include "simcl.h" @@ -93,20 +96,22 @@ COMMAND_DO_WORK_APP(cl_show_option_cmd) if (!s || !strcmp(s, o->get_name())) { + int j; con->dd_printf("%d. %s: ", i, object_name(o)); o->print(con); con->dd_printf(" - %s\n", o->help); - union option_value *val= o->get_value(); + con->dd_printf(" Type: %s\n", o->get_type_name()); + /*union option_value *val= o->get_value(); con->dd_printf(" Value: \""); unsigned int uj; - int j; TYPE_UBYTE *d= (TYPE_UBYTE*)val; for (uj= 0; uj < sizeof(*val); uj++) - con->print_char_octal(d[uj]); - con->dd_printf("\"\n Creator: \"%s\"\n %d Users:\n", + con->print_char_octal(d[uj]); + con->dd_printf("\"\n");*/ + con->dd_printf(" Hidden: %s\n", (o->hidden)?"True":"False"); + con->dd_printf(" Creator: \"%s\"\n %d Users:\n", object_name(o->get_creator()), o->users->count); - con->dd_printf(" Hidden: %s\n", (o->hidden)?"True":"False"); for (j= 0; j < o->users->count; j++) { class cl_optref *r= (class cl_optref *)(o->users->at(j)); @@ -119,7 +124,65 @@ COMMAND_DO_WORK_APP(cl_show_option_cmd) } } - return(DD_FALSE);; + return(DD_FALSE); +} + + +// prj +#include "errorcl.h" + +static void +show_error_cmd_print_node(class cl_console *con, + int indent, class cl_base *node) +{ + if (!node) + return; + int i; + for (i= 0; i < indent; i++) + con->dd_printf(" "); + char *name= node->get_name("unknown"); + class cl_error_class *ec= dynamic_cast(node); + char *str; + con->dd_printf("%s: %s [%s/%s]\n", + str= case_string(case_case, ec->get_type_name()), + name, get_id_string(error_on_off_names, + ec->get_on()), + (ec->is_on())?"ON":"OFF"); + free(str); + class cl_base *c= node->first_child(); + while (c) + { + show_error_cmd_print_node(con, indent+2, c); + c= node->next_child(c); + } +} + +/* + * Command: show error + *---------------------------------------------------------------------------- + */ +COMMAND_DO_WORK_APP(cl_show_error_cmd) +{ + /*class cl_cmd_arg *parm= cmdline->param(0); + char *s= 0; + + if (!parm) + ; + else if (cmdline->syntax_match(0, STRING)) { + s= parm->value.string.string; + } + else + con->dd_printf("%s\n", short_help?short_help:"Error: wrong syntax\n"); + */ + int i; + for (i= 0; i < registered_errors->count; i++) + { + class cl_error_class *ec; + ec= dynamic_cast(registered_errors->object_at(i)); + if (!ec->get_parent()) + show_error_cmd_print_node(con, 0, ec); + } + return(DD_FALSE); }