*/ void Unbind_Values_Core(REBVAL value[], REBSER *frame, REBOOL deep) /* ** Unbind words in a block, optionally unbinding those which are ** bound to a particular frame (if frame is NULL, then all ** words will be unbound regardless of their VAL_WORD_FRAME). ** ***********************************************************************/ { for (; NOT_END(value); value++) { if (ANY_WORD(value) && (!frame || VAL_WORD_FRAME(value) == frame)) UNBIND_WORD(value); if (ANY_BLOCK(value) && deep) Unbind_Values_Core(VAL_BLK_DATA(value), frame, TRUE); } }
// // Unbind_Values_Core: C // // Unbind words in a block, optionally unbinding those which are // bound to a particular target (if target is NULL, then all // words will be unbound regardless of their VAL_WORD_CONTEXT). // void Unbind_Values_Core(RELVAL *head, REBCTX *context, REBOOL deep) { RELVAL *value = head; for (; NOT_END(value); value++) { if ( ANY_WORD(value) && ( !context || ( IS_WORD_BOUND(value) && !IS_RELATIVE(value) && VAL_WORD_CONTEXT(KNOWN(value)) == context ) ) ) { UNBIND_WORD(value); } else if (ANY_ARRAY(value) && deep) Unbind_Values_Core(VAL_ARRAY_AT(value), context, TRUE); } }