//         return   exported name      implementation      args
_INTERFACE(void,    scheme_define,     scheme_define,      scheme * sc, pointer env, pointer symbol, pointer value)
_INTERFACE(pointer, cons,              s_cons,             scheme *sc, pointer a, pointer b)
_INTERFACE(pointer, immutable_cons,    s_immutable_cons,   scheme * sc, pointer a, pointer b)
_INTERFACE(pointer, reserve_cells,     reserve_cells,      scheme * sc, int n)
_INTERFACE(pointer, mk_integer,        mk_integer,         scheme * sc, long long num)
_INTERFACE(pointer, mk_real,           mk_real,            scheme * sc, double num)
_INTERFACE(pointer, mk_symbol,         mk_symbol,          scheme * sc, const char *name)
_INTERFACE(pointer, gensym,            gensym,             scheme * sc, char_t *pattern)
_INTERFACE(pointer, mk_string,         mk_string,          scheme * sc, const char *str)
_INTERFACE(pointer, mk_counted_string, mk_counted_string,  scheme * sc, const char *str, size_t len)
_INTERFACE(pointer, mk_character,      mk_character,       scheme * sc, int c)
_INTERFACE(pointer, mk_vector,         mk_vector,          scheme * sc, size_t len)
_INTERFACE(pointer, mk_bvector,        mk_bvector,         scheme * sc, size_t len, uint8_t val)
_INTERFACE(pointer, mk_struct,         mk_struct,          scheme * sc, pointer sym, size_t len)
_INTERFACE(pointer, mk_foreign_func,   mk_foreign_func,    scheme * sc, foreign_func f)
_INTERFACE(void,    putstr,            putstr,             scheme * sc, const char *s)
_INTERFACE(void,    putcharacter,      putcharacter,       scheme * sc, int c)
_INTERFACE(bool,    is_string,         is_string,          pointer p)
_INTERFACE(char *,  string_value,      string_value,       pointer p)
_INTERFACE(bool,    is_number,         is_number,          pointer p)
_INTERFACE(num,     nvalue,            nvalue,             pointer p)
_INTERFACE(long long, ivalue,          ivalue,             pointer p)
_INTERFACE(double,  rvalue,            rvalue,             pointer p)
_INTERFACE(bool,    is_integer,        is_integer,         pointer p)
_INTERFACE(bool,    is_real,           is_real,            pointer p)
_INTERFACE(bool,    is_character,      is_character,       pointer p)
_INTERFACE(long,    charvalue,         charvalue,          pointer p)
_INTERFACE(bool,    is_list,           is_list,            scheme * sc, pointer p)
_INTERFACE(bool,    is_vector,         is_vector,          pointer p)
_INTERFACE(int,     list_length,       list_length,        scheme * sc, pointer vec)
_INTERFACE(size_t,  vector_length,     vector_length,      pointer vec)
_INTERFACE(void,    fill_vector,       fill_vector,        pointer vec, pointer elem)
_INTERFACE(pointer, vector_elem,       vector_elem,        pointer vec, int ielem)
_INTERFACE(pointer, set_vector_elem,   set_vector_elem,    pointer vec, int ielem, pointer newel)
_INTERFACE(bool,    is_bvector,        is_bvector,         pointer p)
_INTERFACE(uint8_t, bvector_elem,      bvector_elem,       pointer vec, int ielem)
_INTERFACE(void,    set_bvector_elem,  set_bvector_elem,   pointer vec, int ielem, uint8_t newel)
_INTERFACE(bool,    is_struct,         is_struct,          pointer p)
_INTERFACE(pointer, struct_elem,       struct_elem,        pointer strct, int ielem)
_INTERFACE(void,    set_struct_elem,   set_struct_elem,    pointer strct, int ielem, pointer newel)
_INTERFACE(bool,    is_port,           is_port,            pointer p)
_INTERFACE(bool,    is_pair,           is_pair,            pointer p)
_INTERFACE(pointer, pair_car,          pair_car,           pointer p)
_INTERFACE(pointer, pair_cdr,          pair_cdr,           pointer p)
_INTERFACE(pointer, set_car,           set_car,            pointer p, pointer q)
_INTERFACE(pointer, set_cdr,           set_cdr,            pointer p, pointer q)
_INTERFACE(bool,    is_symbol,         is_symbol,          pointer p)
_INTERFACE(char *,  symname,           symname,            pointer p)
_INTERFACE(bool,    is_syntax,         is_syntax,          pointer p)
_INTERFACE(bool,    is_proc,           is_proc,            pointer p)
_INTERFACE(bool,    is_foreign,        is_foreign,         pointer p)
_INTERFACE(char *,  syntaxname,        syntaxname,         pointer p)
_INTERFACE(bool,    is_closure,        is_closure,         pointer p)
_INTERFACE(bool,    is_macro,          is_macro,           pointer p)
_INTERFACE(pointer, closure_code,      closure_code,       pointer p)
_INTERFACE(pointer, closure_env,       closure_env,        pointer p)
_INTERFACE(bool,    is_continuation,   is_continuation,    pointer p)
_INTERFACE(bool,    is_promise,        is_promise,         pointer p)
_INTERFACE(bool,    is_environment,    is_environment,     pointer p)
_INTERFACE(bool,    is_immutable,      is_immutable,       pointer p)
_INTERFACE(void,    setimmutable,      setimmutable,       pointer p)
_INTERFACE(void,    load_file,         scheme_load_file,   scheme * sc, FILE * fin)
_INTERFACE(void,    load_string,       scheme_load_string, scheme * sc, const char *input)
#undef _INTERFACE
