mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-28 15:30:17 +00:00
48 lines
1.0 KiB
C
48 lines
1.0 KiB
C
#pragma once
|
|
|
|
#include "pocketpy/common/str.h"
|
|
#include "pocketpy/common/strname.h"
|
|
#include "pocketpy/objects/sourcedata.h"
|
|
#include "pocketpy/objects/object.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct pkpy_ExceptionFrame {
|
|
pkpy_SourceData_ src;
|
|
int lineno;
|
|
const char* cursor;
|
|
pkpy_Str name;
|
|
} pkpy_ExceptionFrame;
|
|
|
|
typedef struct pkpy_Exception {
|
|
pkpy_StrName type;
|
|
pkpy_Str msg;
|
|
bool is_re;
|
|
|
|
int _ip_on_error;
|
|
void* _code_on_error;
|
|
|
|
PyObject* self; // weak reference
|
|
|
|
c11_vector/*T=pkpy_ExceptionFrame*/ stacktrace;
|
|
} pkpy_Exception;
|
|
|
|
void pkpy_Exception__ctor(pkpy_Exception* self, pkpy_StrName type);
|
|
void pkpy_Exception__dtor(pkpy_Exception* self);
|
|
void pkpy_Exception__stpush(pkpy_Exception* self, pkpy_SourceData_ src, int lineno, const char* cursor, const char* name);
|
|
pkpy_Str pkpy_Exception__summary(pkpy_Exception* self);
|
|
|
|
struct Error{
|
|
const char* type;
|
|
pkpy_SourceData_ src;
|
|
int lineno;
|
|
const char* cursor;
|
|
char msg[100];
|
|
int64_t userdata;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif |