X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fcmd.src%2Fshow.cc;h=28763745f69bf92e254d532bce022638495f0618;hb=34d14506fd0c12ee5434fec0f9dec27753e1aab5;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..28763745 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" @@ -46,7 +49,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA //int //cl_show_copying_cmd::do_work(class cl_sim *sim, -// class cl_cmdline *cmdline, class cl_console *con) +// class cl_cmdline *cmdline, class cl_console_base *con) COMMAND_DO_WORK(cl_show_copying_cmd) { con->dd_printf("%s\n", copying); @@ -61,7 +64,7 @@ COMMAND_DO_WORK(cl_show_copying_cmd) //int //cl_show_warranty_cmd::do_work(class cl_sim *sim, -// class cl_cmdline *cmdline, class cl_console *con) +// class cl_cmdline *cmdline, class cl_console_base *con) COMMAND_DO_WORK(cl_show_warranty_cmd) { con->dd_printf("%s\n", warranty); @@ -91,35 +94,96 @@ COMMAND_DO_WORK_APP(cl_show_option_cmd) { class cl_option *o= (class cl_option *)(/*uc*/app->options->at(i)); if (!s || - !strcmp(s, o->get_name())) - { - 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(" 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", - 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)); - con->dd_printf(" %2d. owner(s)=\"%s\"\n", j, - object_name(r->get_owner())); - } - if (i >= 0 && - i < app->options->count-1) - con->dd_printf("\n"); - } + !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); + con->dd_printf(" Type: %s\n", o->get_type_name()); + /*union option_value *val= o->get_value(); + con->dd_printf(" Value: \""); + unsigned int uj; + TYPE_UBYTE *d= (TYPE_UBYTE*)val; + for (uj= 0; uj < sizeof(*val); uj++) + 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); + for (j= 0; j < o->users->count; j++) + { + class cl_optref *r= (class cl_optref *)(o->users->at(j)); + con->dd_printf(" %2d. owner(s)=\"%s\"\n", j, + object_name(r->get_owner())); + } + if (i >= 0 && + i < app->options->count-1) + con->dd_printf("\n"); + } } - return(DD_FALSE);; + return(DD_FALSE); +} + + +// prj +#include "errorcl.h" + +static void +show_error_cmd_print_node(class cl_console_base *con, + int indent, class cl_base *node) +{ + if (!node) + return; + int i; + for (i= 0; i < indent; i++) + con->dd_printf(" "); + const 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"); + */ + class cl_list *registered_errors = cl_error_registry::get_list(); + 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); }