struct pic_error * -> pic_value
This commit is contained in:
parent
d851273f60
commit
da30be167b
|
@ -45,7 +45,7 @@ pic_print_backtrace(pic_state *pic, xFILE *file)
|
|||
struct pic_error *e;
|
||||
pic_value elem, it;
|
||||
|
||||
e = pic_error_ptr(pic->err);
|
||||
e = pic_error_ptr(pic, pic->err);
|
||||
if (! pic_eq_p(pic, pic_obj_value(e->type), pic_intern_lit(pic, ""))) {
|
||||
pic_fwrite(pic, pic_obj_value(e->type), file);
|
||||
xfprintf(pic, file, " ");
|
||||
|
|
|
@ -88,7 +88,7 @@ pic_pop_handler(pic_state *pic)
|
|||
return pic_obj_value(*--pic->xp);
|
||||
}
|
||||
|
||||
struct pic_error *
|
||||
pic_value
|
||||
pic_make_error(pic_state *pic, const char *type, const char *msg, pic_value irrs)
|
||||
{
|
||||
struct pic_error *e;
|
||||
|
@ -102,7 +102,7 @@ pic_make_error(pic_state *pic, const char *type, const char *msg, pic_value irrs
|
|||
e->irrs = irrs;
|
||||
e->stack = pic_str_ptr(pic, stack);
|
||||
|
||||
return e;
|
||||
return pic_obj_value(e);
|
||||
}
|
||||
|
||||
pic_value
|
||||
|
@ -136,11 +136,7 @@ pic_raise(pic_state *pic, pic_value err)
|
|||
void
|
||||
pic_error(pic_state *pic, const char *type, const char *msg, pic_value irrs)
|
||||
{
|
||||
struct pic_error *e;
|
||||
|
||||
e = pic_make_error(pic, type, msg, irrs);
|
||||
|
||||
pic_raise(pic, pic_obj_value(e));
|
||||
pic_raise(pic, pic_make_error(pic, type, msg, irrs));
|
||||
}
|
||||
|
||||
static pic_value
|
||||
|
@ -204,31 +200,37 @@ pic_error_error_object_p(pic_state *pic)
|
|||
static pic_value
|
||||
pic_error_error_object_message(pic_state *pic)
|
||||
{
|
||||
struct pic_error *e;
|
||||
pic_value e;
|
||||
|
||||
pic_get_args(pic, "e", &e);
|
||||
pic_get_args(pic, "o", &e);
|
||||
|
||||
return pic_obj_value(e->msg);
|
||||
pic_assert_type(pic, e, error);
|
||||
|
||||
return pic_obj_value(pic_error_ptr(pic, e)->msg);
|
||||
}
|
||||
|
||||
static pic_value
|
||||
pic_error_error_object_irritants(pic_state *pic)
|
||||
{
|
||||
struct pic_error *e;
|
||||
pic_value e;
|
||||
|
||||
pic_get_args(pic, "e", &e);
|
||||
pic_get_args(pic, "o", &e);
|
||||
|
||||
return e->irrs;
|
||||
pic_assert_type(pic, e, error);
|
||||
|
||||
return pic_error_ptr(pic, e)->irrs;
|
||||
}
|
||||
|
||||
static pic_value
|
||||
pic_error_error_object_type(pic_state *pic)
|
||||
{
|
||||
struct pic_error *e;
|
||||
pic_value e;
|
||||
|
||||
pic_get_args(pic, "e", &e);
|
||||
pic_get_args(pic, "o", &e);
|
||||
|
||||
return pic_obj_value(e->type);
|
||||
pic_assert_type(pic, e, error);
|
||||
|
||||
return pic_obj_value(pic_error_ptr(pic, e)->type);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -51,8 +51,6 @@ typedef struct {
|
|||
} pic_value;
|
||||
#endif
|
||||
|
||||
struct pic_error;
|
||||
|
||||
typedef void *(*pic_allocf)(void *userdata, void *ptr, size_t n);
|
||||
|
||||
pic_state *pic_open(pic_allocf f, void *userdata);
|
||||
|
|
|
@ -145,9 +145,9 @@ struct pic_checkpoint {
|
|||
#define pic_proc_ptr(pic, o) ((struct pic_proc *)pic_obj_ptr(o))
|
||||
#define pic_env_ptr(pic, o) ((struct pic_env *)pic_obj_ptr(o))
|
||||
#define pic_port_ptr(pic, o) ((struct pic_port *)pic_obj_ptr(o))
|
||||
#define pic_error_ptr(pic, o) ((struct pic_error *)pic_obj_ptr(o))
|
||||
#define pic_context_ptr(o) ((struct pic_context *)pic_obj_ptr(o))
|
||||
#define pic_rec_ptr(v) ((struct pic_record *)pic_obj_ptr(v))
|
||||
#define pic_error_ptr(v) ((struct pic_error *)pic_obj_ptr(v))
|
||||
|
||||
#define pic_obj_p(pic,v) (pic_vtype(pic,v) == PIC_IVAL_END)
|
||||
#define pic_env_p(pic, v) (pic_type(pic, v) == PIC_TYPE_ENV)
|
||||
|
@ -173,9 +173,9 @@ struct pic_object *pic_obj_alloc(pic_state *, size_t, int type);
|
|||
pic_value pic_make_identifier(pic_state *, pic_value id, pic_value env);
|
||||
pic_value pic_make_proc(pic_state *, pic_func_t, int, pic_value *);
|
||||
pic_value pic_make_proc_irep(pic_state *, struct pic_irep *, struct pic_context *);
|
||||
struct pic_record *pic_make_rec(pic_state *, pic_value, pic_value);
|
||||
struct pic_error *pic_make_error(pic_state *, const char *, const char *, pic_value);
|
||||
pic_value pic_make_env(pic_state *, pic_value env);
|
||||
pic_value pic_make_error(pic_state *, const char *type, const char *msg, pic_value irrs);
|
||||
struct pic_record *pic_make_rec(pic_state *, pic_value, pic_value);
|
||||
|
||||
pic_value pic_add_identifier(pic_state *, pic_value id, pic_value env);
|
||||
pic_value pic_put_identifier(pic_state *, pic_value id, pic_value uid, pic_value env);
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
* l pic_value * lambda object
|
||||
* p pic_value * port object
|
||||
* d pic_value * dictionary object
|
||||
* e struct pic_error ** error object
|
||||
* r struct pic_record ** record object
|
||||
*
|
||||
* | optional operator
|
||||
|
@ -147,7 +146,6 @@ pic_get_args(pic_state *pic, const char *format, ...)
|
|||
#define PTR_CASE(c, type, ctype) \
|
||||
VAL_CASE(c, type, ctype, pic_## type ##_ptr(v))
|
||||
|
||||
PTR_CASE('e', error, struct pic_error *)
|
||||
PTR_CASE('r', rec, struct pic_record *)
|
||||
|
||||
#define OBJ_CASE(c, type) VAL_CASE(c, type, pic_value, v)
|
||||
|
|
Loading…
Reference in New Issue