2024-04-02 20:44:34 +00:00
|
|
|
#ifndef SK_FUN_H
|
|
|
|
#define SK_FUN_H
|
|
|
|
|
|
|
|
#include "commons.h"
|
|
|
|
|
2024-04-05 16:31:11 +00:00
|
|
|
struct closure
|
|
|
|
{
|
|
|
|
int id;
|
|
|
|
struct value* value;
|
|
|
|
};
|
|
|
|
|
2024-04-02 20:44:34 +00:00
|
|
|
struct fun
|
|
|
|
{
|
|
|
|
struct prog* prog;
|
2024-04-05 16:31:11 +00:00
|
|
|
struct sym* sym;
|
|
|
|
struct vec closures;
|
2024-04-02 20:44:34 +00:00
|
|
|
};
|
|
|
|
|
2024-04-05 16:31:11 +00:00
|
|
|
void closure_init(struct closure* self, int id, struct value* value);
|
|
|
|
struct closure* closure_new_clone(struct closure* self);
|
|
|
|
void closure_free(struct closure* self);
|
|
|
|
|
2024-04-02 20:44:34 +00:00
|
|
|
void fun_init(struct fun* self, struct prog* new_prog);
|
|
|
|
void fun_free(struct fun* self);
|
|
|
|
struct fun* fun_new_clone(struct fun* self);
|
|
|
|
|
2024-04-05 16:31:11 +00:00
|
|
|
void fun_capture(struct fun* self, int id, struct value* value);
|
|
|
|
struct closure* fun_try_get_closure(struct fun* self, int id);
|
|
|
|
|
2024-04-02 20:44:34 +00:00
|
|
|
#endif
|