2 * Simulator of microcontrollers (errorcl.h)
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
30 #ifndef ERRORCL_HEADER
31 #define ERRORCL_HEADER
39 extern struct id_element error_on_off_names[];
47 const int err_stop= (err_unknown|err_error);
49 class cl_error_class: public cl_base
56 cl_error_class(enum error_type typ, const char *aname,
57 enum error_on_off be_on= ERROR_PARENT);
58 cl_error_class(enum error_type typ, const char *aname,
59 class cl_error_class *parent,
60 enum error_on_off be_on= ERROR_PARENT);
62 enum error_on_off get_on(void) { return(on); }
63 void set_on(enum error_on_off val);
65 enum error_type get_type(void);
66 const char *get_type_name(void);
67 //char *get_name(void);
70 class cl_error_registry
73 cl_error_registry(void);
74 class cl_error_class *find(const char *type_name)
76 if (NIL == registered_errors)
78 return static_cast<class cl_error_class *>(registered_errors->first_that(compare, type_name));
80 static class cl_list *get_list(void)
82 return registered_errors;
86 class cl_error_class *register_error(class cl_error_class *error_class)
88 if (!registered_errors)
89 registered_errors= new cl_list(2, 2, "registered errors");
90 registered_errors->add(error_class);
95 static class cl_list *registered_errors;
96 static int compare(void *obj1, const void *obj2)
98 return (static_cast<class cl_base *>(obj1))->is_named(static_cast<const char *>(obj2));
102 class cl_commander_base; //forward
104 class cl_error: public cl_base
107 class cl_error_class *classification;
109 bool inst; // Occured during instruction execution
110 t_addr PC; // Address of the instruction
113 virtual ~cl_error(void);
114 virtual int init(void);
117 virtual enum error_type get_type(void);
118 virtual enum error_on_off get_on(void);
119 virtual bool is_on(void);
120 virtual class cl_error_class *get_class(void) { return(classification); }
122 virtual void print(class cl_commander_base *c);
123 virtual const char *get_type_name();
129 /* End of sim.src/errorcl.h */