+struct id_element error_on_off_names[]= {
+ { ERROR_PARENT, "unset" },
+ { ERROR_ON , "on" },
+ { ERROR_OFF , "off" },
+ { 0 , 0 }
+};
+
+class cl_error_class error_class_base(err_error, "non-classified", ERROR_ON);
+
+class cl_list *registered_errors= NIL;
+
+/*
+ */
+
+cl_error_class::cl_error_class(enum error_type typ, char *aname):
+ cl_base()
+{
+ type= typ;
+ on= ERROR_PARENT;
+ set_name(aname, "not-known");
+ if (!registered_errors)
+ registered_errors= new cl_list(2, 2, "registered errors");
+ registered_errors->add(this);
+}
+
+cl_error_class::cl_error_class(enum error_type typ, char *aname,
+ enum error_on_off be_on):
+ cl_base()
+{
+ type= typ;
+ on= be_on;
+ set_name(aname, "not-known");
+ if (!registered_errors)
+ registered_errors= new cl_list(2, 2, "registered errors");
+ registered_errors->add(this);
+}
+
+cl_error_class::cl_error_class(enum error_type typ, char *aname,
+ class cl_error_class *parent):
+ cl_base()
+{
+ type= typ;
+ on= ERROR_PARENT;
+ set_name(aname, "not-known");
+ if (!registered_errors)
+ registered_errors= new cl_list(2, 2, "registered errors");
+ registered_errors->add(this);
+ if (parent)
+ parent->add_child(this);
+}
+
+cl_error_class::cl_error_class(enum error_type typ, char *aname,
+ class cl_error_class *parent,
+ enum error_on_off be_on):
+ cl_base()
+{
+ type= typ;
+ on= be_on;
+ set_name(aname, "not-known");
+ if (!registered_errors)
+ registered_errors= new cl_list(2, 2, "registered errors");
+ registered_errors->add(this);
+ if (parent)
+ parent->add_child(this);
+}
+
+void
+cl_error_class::set_on(enum error_on_off val)
+{
+ if (!get_parent() &&
+ val == ERROR_PARENT)
+ return;
+ on= val;
+}
+
+bool
+cl_error_class::is_on(void)
+{
+ if (on == ERROR_PARENT)
+ {
+ if (!get_parent())
+ return(DD_TRUE);
+ class cl_error_class *p=
+ dynamic_cast<class cl_error_class *>(get_parent());
+ return(p->is_on());
+ }
+ else
+ return(on == ERROR_ON);
+}
+
+enum error_type
+cl_error_class::get_type(void)
+{
+ return(type);
+}
+
+/*char *
+cl_error_class::get_name(void)
+{
+ return(name);
+}*/
+
+char *
+cl_error_class::get_type_name()
+{
+ return(get_id_string(error_type_names, type, "untyped"));
+ /*switch (type)
+ {
+ case err_unknown: return("unclassified"); break;
+ case err_error: return("error"); break;
+ case err_warning: return("warning"); break;
+ }
+ return("untyped");*/
+}
+
+
+/*
+ */