error.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // #include "pocketpy/objects/error.h"
  2. // #include "pocketpy/common/strname.h"
  3. // #include "pocketpy/common/sstream.h"
  4. // void pkpy_Exception__ctor(pkpy_Exception* self, py_Name type){
  5. // self->type = type;
  6. // self->is_re = true;
  7. // self->_ip_on_error = -1;
  8. // self->_code_on_error = NULL;
  9. // self->self = NULL;
  10. // py_Str__ctor(&self->msg, "");
  11. // c11_vector__ctor(&self->stacktrace, sizeof(pkpy_ExceptionFrame));
  12. // }
  13. // void pkpy_Exception__dtor(pkpy_Exception* self){
  14. // for(int i=0; i<self->stacktrace.count; i++){
  15. // pkpy_ExceptionFrame* frame = c11__at(pkpy_ExceptionFrame, &self->stacktrace, i);
  16. // PK_DECREF(frame->src);
  17. // py_Str__dtor(&frame->name);
  18. // }
  19. // py_Str__dtor(&self->msg);
  20. // c11_vector__dtor(&self->stacktrace);
  21. // }
  22. // void pkpy_Exception__stpush(pkpy_Exception* self, pk_SourceData_ src, int lineno, const char* cursor, const char* name){
  23. // if(self->stacktrace.count >= 7) return;
  24. // PK_INCREF(src);
  25. // pkpy_ExceptionFrame* frame = c11_vector__emplace(&self->stacktrace);
  26. // frame->src = src;
  27. // frame->lineno = lineno;
  28. // frame->cursor = cursor;
  29. // py_Str__ctor(&frame->name, name);
  30. // }
  31. // py_Str pkpy_Exception__summary(pkpy_Exception* self){
  32. // c11_sbuf ss;
  33. // c11_sbuf__ctor(&ss);
  34. // if(self->is_re){
  35. // c11_sbuf__write_cstr(&ss, "Traceback (most recent call last):\n");
  36. // }
  37. // for(int i=self->stacktrace.count-1; i >= 0; i--) {
  38. // pkpy_ExceptionFrame* frame = c11__at(pkpy_ExceptionFrame, &self->stacktrace, i);
  39. // py_Str s = pk_SourceData__snapshot(frame->src, frame->lineno, frame->cursor, py_Str__data(&frame->name));
  40. // c11_sbuf__write_Str(&ss, &s);
  41. // py_Str__dtor(&s);
  42. // c11_sbuf__write_cstr(&ss, "\n");
  43. // }
  44. // const char* name = py_Name__rmap(self->type);
  45. // c11_sbuf__write_cstr(&ss, name);
  46. // if(self->msg.size > 0){
  47. // c11_sbuf__write_cstr(&ss, ": ");
  48. // c11_sbuf__write_Str(&ss, &self->msg);
  49. // }
  50. // return c11_sbuf__submit(&ss);
  51. // }