2 * Simulator of microcontrollers (error.cc)
4 * Copyright (C) 2001,01 Drotos Daniel, Talker Bt.
6 * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
11 This file is part of microcontroller simulator: ucsim.
13 UCSIM is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation; either version 2 of the License, or
16 (at your option) any later version.
18 UCSIM is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
23 You should have received a copy of the GNU General Public License
24 along with UCSIM; see the file COPYING. If not, write to the Free
25 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
41 struct id_element error_on_off_names[]= {
42 { ERROR_PARENT, "unset" },
44 { ERROR_OFF , "off" },
48 static class cl_error_registry error_registry;
50 class cl_list *cl_error_registry::registered_errors= NIL;
55 cl_error_class::cl_error_class(enum error_type typ, const char *aname,
56 enum error_on_off be_on/* = ERROR_PARENT*/):
61 set_name(aname, "not-known");
64 cl_error_class::cl_error_class(enum error_type typ, const char *aname,
65 class cl_error_class *parent,
66 enum error_on_off be_on/* = ERROR_PARENT*/):
71 set_name(aname, "not-known");
73 parent->add_child(this);
77 cl_error_class::set_on(enum error_on_off val)
86 cl_error_class::is_on(void)
88 if (on == ERROR_PARENT)
92 class cl_error_class *p=
93 dynamic_cast<class cl_error_class *>(get_parent());
97 return(on == ERROR_ON);
101 cl_error_class::get_type(void)
107 cl_error_class::get_name(void)
113 cl_error_class::get_type_name()
115 return(get_id_string(error_type_names, type, "untyped"));
118 case err_unknown: return("unclassified"); break;
119 case err_error: return("error"); break;
120 case err_warning: return("warning"); break;
129 cl_error::cl_error(void):
132 classification= error_registry.find("non-classified");
135 cl_error::~cl_error(void)
146 cl_error::get_type(void)
149 return(classification->get_type());
154 cl_error::get_on(void)
158 return(classification->get_on());
162 cl_error::is_on(void)
166 return(classification->is_on());
170 cl_error::print(class cl_commander_base *c)
172 c->dd_printf("%s\n", get_type_name());
176 cl_error::get_type_name()
178 enum error_type type= get_type();
179 return(get_id_string(error_type_names, type, "untyped"));
182 cl_error_registry::cl_error_registry(void)
184 if (NULL == error_registry.find("non-classified"))
185 register_error(new cl_error_class(err_error, "non-classified", ERROR_ON));
189 /* End of sim.src/error.cc */