add some pair functions
This commit is contained in:
parent
177d2c7098
commit
9038939bd1
|
@ -13,4 +13,8 @@ void pic_free(pic_state *, void *);
|
||||||
pic_state *pic_open();
|
pic_state *pic_open();
|
||||||
void pic_close(pic_state *);
|
void pic_close(pic_state *);
|
||||||
|
|
||||||
|
pic_value pic_cons(pic_state *pic, pic_value, pic_value);
|
||||||
|
pic_value pic_car(pic_state *pic, pic_value);
|
||||||
|
pic_value pic_cdr(pic_state *pic, pic_value);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include "picrin.h"
|
||||||
|
|
||||||
|
pic_value
|
||||||
|
pic_cons(pic_state *pic, pic_value car, pic_value cdr)
|
||||||
|
{
|
||||||
|
struct pic_pair *pair;
|
||||||
|
|
||||||
|
pair = (struct pic_pair *)pic_gc_alloc(pic, sizeof(struct pic_pair), PIC_TT_PAIR);
|
||||||
|
pair->car = car;
|
||||||
|
pair->cdr = cdr;
|
||||||
|
|
||||||
|
return pic_obj_value(pair);
|
||||||
|
}
|
||||||
|
|
||||||
|
pic_value
|
||||||
|
pic_car(pic_state *pic, pic_value obj)
|
||||||
|
{
|
||||||
|
struct pic_pair *pair;
|
||||||
|
|
||||||
|
pair = (struct pic_pair *)obj->u->data;
|
||||||
|
|
||||||
|
return pair->car;
|
||||||
|
}
|
||||||
|
|
||||||
|
pic_value
|
||||||
|
pic_cdr(pic_state *pic, pic_value obj)
|
||||||
|
{
|
||||||
|
struct pic_pair *pair;
|
||||||
|
|
||||||
|
pair = (struct pic_pair *)obj->u->data;
|
||||||
|
|
||||||
|
return pair->cdr;
|
||||||
|
}
|
Loading…
Reference in New Issue