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_list *registered_errors= NIL;
53 cl_error_class::cl_error_class(enum error_type typ, char *aname,
54 enum error_on_off be_on/* = ERROR_PARENT*/):
59 set_name(aname, "not-known");
60 if (!registered_errors)
61 registered_errors= new cl_list(2, 2, "registered errors");
62 registered_errors->add(this);
65 cl_error_class::cl_error_class(enum error_type typ, char *aname,
66 class cl_error_class *parent,
67 enum error_on_off be_on/* = ERROR_PARENT*/):
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);
77 parent->add_child(this);
81 cl_error_class::set_on(enum error_on_off val)
90 cl_error_class::is_on(void)
92 if (on == ERROR_PARENT)
96 class cl_error_class *p=
97 dynamic_cast<class cl_error_class *>(get_parent());
101 return(on == ERROR_ON);
105 cl_error_class::get_type(void)
111 cl_error_class::get_name(void)
117 cl_error_class::get_type_name()
119 return(get_id_string(error_type_names, type, "untyped"));
122 case err_unknown: return("unclassified"); break;
123 case err_error: return("error"); break;
124 case err_warning: return("warning"); break;
133 class cl_error_class *cl_error::error_class_base;
135 cl_error::cl_error(void):
138 if (NULL == error_class_base)
139 error_class_base = new cl_error_class(err_error, "non-classified", ERROR_ON);
141 classification= error_class_base;
144 cl_error::~cl_error(void)
155 cl_error::get_type(void)
158 return(classification->get_type());
163 cl_error::get_on(void)
167 return(classification->get_on());
171 cl_error::is_on(void)
175 return(classification->is_on());
179 cl_error::print(class cl_commander *c)
181 c->dd_printf("%s\n", get_type_name());
185 cl_error::get_type_name()
187 enum error_type type= get_type();
188 return(get_id_string(error_type_names, type, "untyped"));
192 /* End of sim.src/error.cc */