X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=sim%2Fucsim%2Fsim.src%2Fstack.cc;h=f10ab8fc077b273db6fcaaa1eb71e9a77ffb116c;hb=5156ec0bb15ef639c2aa78f616a05e3ab0435813;hp=d27f91be371a59ab77865b27c40a0f5db68e3f71;hpb=32f9d7bd4da99c9837bc529a8d847c7c0d873684;p=fw%2Fsdcc diff --git a/sim/ucsim/sim.src/stack.cc b/sim/ucsim/sim.src/stack.cc index d27f91be..f10ab8fc 100644 --- a/sim/ucsim/sim.src/stack.cc +++ b/sim/ucsim/sim.src/stack.cc @@ -420,24 +420,39 @@ cl_stack_pop::match(class cl_stack_op *op) * Stack Errors */ -ERROR_CLASS_DEF_PARENT_ON(err_error, stack, "stack", - error_class_base, ERROR_OFF); +class cl_error_class *cl_error_stack::error_stack_class; + +cl_error_stack::cl_error_stack(void) +{ + if (NULL == error_stack_class) + error_stack_class= new cl_error_class(err_error, "stack", classification, ERROR_OFF); + classification= error_stack_class; +} /* Stack Tracker Errors */ -ERROR_CLASS_DEF_PARENT(err_error, stack_tracker, "stack_tracker", - error_stack_class); + +class cl_error_class *cl_error_stack_tracker::error_stack_tracker_class; + +cl_error_stack_tracker::cl_error_stack_tracker(void) +{ +// cl_error_class *error_stack_tracker_class = new cl_error_class(err_error, "stack_tracker", error_stack_class, ERROR_OFF); +// classification= &error_stack_tracker_class; + if (NULL == error_stack_tracker_class) + error_stack_tracker_class= new cl_error_class(err_error, "stack_tracker", classification); + classification= error_stack_tracker_class; +} /* Stack Tracker: wrong handle */ -ERROR_CLASS_DEF_PARENT(err_error, - stack_tracker_wrong_handle, - "stack_tracker_wrong_handle", - error_stack_tracker_class); + +class cl_error_class *cl_error_stack_tracker_wrong_handle::error_stack_tracker_wrong_handle_class; cl_error_stack_tracker_wrong_handle::cl_error_stack_tracker_wrong_handle(bool write_op): cl_error_stack_tracker() { write_operation= write_op; - classification= &error_stack_tracker_wrong_handle_class; + if (NULL == error_stack_tracker_wrong_handle_class) + error_stack_tracker_wrong_handle_class= new cl_error_class(err_error, "stack_tracker_wrong_handle", classification); + classification= error_stack_tracker_wrong_handle_class; } void @@ -448,17 +463,17 @@ cl_error_stack_tracker_wrong_handle::print(class cl_commander *c) } /* Stack Tracker: operation on empty stack */ -ERROR_CLASS_DEF_PARENT(err_error, - stack_tracker_empty, - "operation_on_empty_stack", - error_stack_tracker_class); + +class cl_error_class *cl_error_stack_tracker_empty::error_stack_tracker_empty_class; cl_error_stack_tracker_empty:: cl_error_stack_tracker_empty(class cl_stack_op *op): cl_error_stack_tracker() { operation= op->mk_copy(); - classification= &error_stack_tracker_empty_class; + if (NULL == error_stack_tracker_empty_class) + error_stack_tracker_empty_class= new cl_error_class(err_error, "operation_on_empty_stack", classification); + classification= error_stack_tracker_empty_class; } cl_error_stack_tracker_empty::~cl_error_stack_tracker_empty(void) @@ -476,10 +491,8 @@ cl_error_stack_tracker_empty::print(class cl_commander *c) } /* Stack Tracker: operation on empty stack */ -ERROR_CLASS_DEF_PARENT(err_warning, - stack_tracker_unmatch, - "stack_operation_unmatched_to_top_of_stack", - error_stack_tracker_class); + +class cl_error_class *cl_error_stack_tracker_unmatch::error_stack_tracker_unmatch_class; cl_error_stack_tracker_unmatch:: cl_error_stack_tracker_unmatch(class cl_stack_op *Top, class cl_stack_op *op): @@ -487,7 +500,9 @@ cl_error_stack_tracker_unmatch(class cl_stack_op *Top, class cl_stack_op *op): { top= Top->mk_copy(); operation= op->mk_copy(); - classification= &error_stack_tracker_unmatch_class; + if (NULL == error_stack_tracker_unmatch_class) + error_stack_tracker_unmatch_class= new cl_error_class(err_warning, "stack_operation_unmatched_to_top_of_stack", classification); + classification= error_stack_tracker_unmatch_class; } cl_error_stack_tracker_unmatch::~cl_error_stack_tracker_unmatch(void) @@ -507,10 +522,8 @@ cl_error_stack_tracker_unmatch::print(class cl_commander *c) } /* Stack Tracker: stack is inconsistent */ -ERROR_CLASS_DEF_PARENT(err_warning, - stack_tracker_inconsistent, - "stack_looks_corrupted", - error_stack_tracker_class); + +class cl_error_class *cl_error_stack_tracker_inconsistent::error_stack_tracker_inconsistent_class; cl_error_stack_tracker_inconsistent:: cl_error_stack_tracker_inconsistent(class cl_stack_op *op, @@ -518,7 +531,9 @@ cl_error_stack_tracker_inconsistent(class cl_stack_op *op, { operation= op->mk_copy(); unread_data_size= the_unread_data_size; - classification= &error_stack_tracker_inconsistent_class; + if (NULL == error_stack_tracker_inconsistent_class) + error_stack_tracker_inconsistent_class= new cl_error_class(err_warning, "stack_looks_corrupted", classification); + classification= error_stack_tracker_inconsistent_class; } cl_error_stack_tracker_inconsistent::~cl_error_stack_tracker_inconsistent(void)