pic_value pic_callcc(pic_state *pic, struct pic_proc *proc) { struct pic_cont cont; pic_save_point(pic, &cont); if (PIC_SETJMP(pic, cont.jmp)) { return pic_values_by_list(pic, cont.results); } else { pic_value val; val = pic_apply1(pic, proc, pic_obj_value(pic_make_cont(pic, &cont))); pic->cc = pic->cc->prev; return val; } }
pic_value pic_callcc(pic_state *pic, struct pic_proc *proc) { struct pic_cont *cont = pic_malloc(pic, sizeof(struct pic_cont)); pic_save_point(pic, cont); if (PIC_SETJMP(pic, cont->jmp.buf)) { pic->jmp = pic->jmp->prev; return pic_values_by_list(pic, cont->results); } else { pic_value val; val = pic_apply1(pic, proc, pic_obj_value(pic_make_cont(pic, cont))); pic->jmp = pic->jmp->prev; return val; } }
pic_value pic_values5(pic_state *pic, pic_value arg1, pic_value arg2, pic_value arg3, pic_value arg4, pic_value arg5) { return pic_values_by_list(pic, pic_list5(pic, arg1, arg2, arg3, arg4, arg5)); }
pic_value pic_values4(pic_state *pic, pic_value arg1, pic_value arg2, pic_value arg3, pic_value arg4) { return pic_values_by_list(pic, pic_list4(pic, arg1, arg2, arg3, arg4)); }
pic_value pic_values3(pic_state *pic, pic_value arg1, pic_value arg2, pic_value arg3) { return pic_values_by_list(pic, pic_list3(pic, arg1, arg2, arg3)); }
pic_value pic_values2(pic_state *pic, pic_value arg1, pic_value arg2) { return pic_values_by_list(pic, pic_list2(pic, arg1, arg2)); }
pic_value pic_values1(pic_state *pic, pic_value arg1) { return pic_values_by_list(pic, pic_list1(pic, arg1)); }
pic_value pic_values0(pic_state *pic) { return pic_values_by_list(pic, pic_nil_value()); }