/*! \brief Set whether a gEDA object may be garbage collected. * \ingroup guile_c_iface * \par Function Description * If \a gc is non-zero, allow the structure represented by \a smob to * be destroyed when \a smob is garbage-collected. * * \param [in,out] smob Smob for which to set garbage-collection * permission. * \param [in] gc If non-zero, permit garbage collection. */ void edascm_c_set_gc (SCM smob, int gc) { EDASCM_ASSERT_SMOB_VALID (smob); int current = EDASCM_SMOB_GCP (smob); /* Ensure that when smob becomes garbage-collectible, it's removed * from the Scheme value cache, and that when it stops being * garbage-collectible it's cached for re-use. */ if (gc && !current) smob_cache_remove ((void *) SCM_SMOB_DATA (smob)); if (!gc && current) smob_cache_add ((void *) SCM_SMOB_DATA (smob), smob); EDASCM_SMOB_SET_GC (smob, gc); }
/*! \brief Set whether a gEDA object may be garbage collected. * \ingroup guile_c_iface * \par Function Description * If \a gc is non-zero, allow the structure represented by \a smob to * be destroyed when \a smob is garbage-collected. * * \param [in,out] smob Smob for which to set garbage-collection * permission. * \param [in] gc If non-zero, permit garbage collection. */ void edascm_c_set_gc (SCM smob, int gc) { EDASCM_ASSERT_SMOB_VALID (smob); EDASCM_SMOB_SET_GC (smob, gc); }