#include #include "types.h" extern "C" { static scm_t_bits builder_package_tag; SCM mark_package(SCM package_smob) { struct builder_package* pack = (struct builder_package*) SCM_SMOB_DATA(package_smob); scm_gc_mark(pack->name); return pack->update_function; } size_t free_package(SCM package_smob) { struct builder_package* pack = (struct builder_package*) SCM_SMOB_DATA(package_smob); scm_gc_free(pack, sizeof(struct builder_package),"package"); return 0; } static int print_package(SCM package_smob, SCM port, scm_print_state* state) { struct builder_package* pack = (struct builder_package*) SCM_SMOB_DATA(package_smob); scm_puts("#name, port); scm_puts(">", port); return 1; } void init_builder_package_type() { builder_package_tag = scm_make_smob_type("package", sizeof(struct builder_package)); scm_set_smob_mark(builder_package_tag, mark_package); scm_set_smob_free(builder_package_tag, free_package); scm_set_smob_print(builder_package_tag, print_package); } }