static rsexp compile_procedure_definition (RState* r, rsexp expr, rsexp next) { rsexp var, body, formals; rsexp bind, code; if (!validate_procedure_definition (r, expr)) return R_FAILURE; var = r_caadr (expr); body = r_reverse_x (r, r_cddr (expr)); formals = r_cdadr (expr); r_gc_scope_open (r); ensure_or_goto (code = bind = emit_bind (r, var, next), exit); ensure_or_goto (code = emit_return (r), exit); ensure_or_goto (code = compile_sequence (r, body, code), exit); ensure_or_goto (code = emit_close (r, formals, code, bind), exit); exit: r_gc_scope_close_and_protect (r, code); return code; }
abstract_filter_state_t::abstract_filter_state_t(const string &state_name, const string &retry_state_name, const string &thru_state_name, machine_t *owner) : abstract_gate_state_t(state_name, retry_state_name, owner) { s_thru_state = thru_state_name ; thru_state = NULL ; QObject::connect(this, SIGNAL(closed()), this, SLOT(emit_close())) ; }
static rsexp compile_lambda (RState* r, rsexp expr, rsexp next) { rsexp formals; rsexp body; rsexp code; if (!validate_lambda (r, expr)) return R_FAILURE; formals = r_cadr (expr); body = r_reverse_x (r, r_cddr (expr)); r_gc_scope_open (r); ensure_or_goto (code = emit_return (r), exit); ensure_or_goto (code = compile_sequence (r, body, code), exit); ensure_or_goto (code = emit_close (r, formals, code, next), exit); exit: r_gc_scope_close_and_protect (r, code); return code; }