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 class cl_error_class error_class_base(err_error, "non-classified", ERROR_ON);
50 class cl_list *registered_errors= NIL;
55 cl_error_class::cl_error_class(enum error_type typ, char *aname):
60 set_name(aname, "not-known");
61 if (!registered_errors)
62 registered_errors= new cl_list(2, 2, "registered errors");
63 registered_errors->add(this);
66 cl_error_class::cl_error_class(enum error_type typ, char *aname,
67 enum error_on_off be_on):
72 set_name(aname, "not-known");
73 if (!registered_errors)
74 registered_errors= new cl_list(2, 2, "registered errors");
75 registered_errors->add(this);
78 cl_error_class::cl_error_class(enum error_type typ, char *aname,
79 class cl_error_class *parent):
84 set_name(aname, "not-known");
85 if (!registered_errors)
86 registered_errors= new cl_list(2, 2, "registered errors");
87 registered_errors->add(this);
89 parent->add_child(this);
92 cl_error_class::cl_error_class(enum error_type typ, char *aname,
93 class cl_error_class *parent,
94 enum error_on_off be_on):
99 set_name(aname, "not-known");
100 if (!registered_errors)
101 registered_errors= new cl_list(2, 2, "registered errors");
102 registered_errors->add(this);
104 parent->add_child(this);
108 cl_error_class::set_on(enum error_on_off val)
117 cl_error_class::is_on(void)
119 if (on == ERROR_PARENT)
123 class cl_error_class *p=
124 dynamic_cast<class cl_error_class *>(get_parent());
128 return(on == ERROR_ON);
132 cl_error_class::get_type(void)
138 cl_error_class::get_name(void)
144 cl_error_class::get_type_name()
146 return(get_id_string(error_type_names, type, "untyped"));
149 case err_unknown: return("unclassified"); break;
150 case err_error: return("error"); break;
151 case err_warning: return("warning"); break;
160 cl_error::cl_error(void):
167 cl_error::~cl_error(void)
178 cl_error::get_type(void)
181 return(classification->get_type());
186 cl_error::get_on(void)
190 return(classification->get_on());
194 cl_error::is_on(void)
198 return(classification->is_on());
202 cl_error::print(class cl_commander *c)
204 c->dd_printf("%s\n", get_type_name());
208 cl_error::get_type_name()
210 enum error_type type= get_type();
211 return(get_id_string(error_type_names, type, "untyped"));
215 /* End of sim.src/error.cc */