SCM scm_make_srcprops (long line, int col, SCM filename, SCM copy, SCM alist) { if (!SCM_UNBNDP (filename)) { SCM old_alist = alist; /* have to extract the acons, and operate on that, for thread safety. */ SCM last_acons = SCM_CDR (scm_last_alist_filename); if (scm_is_null (old_alist) && scm_is_eq (SCM_CDAR (last_acons), filename)) { alist = last_acons; } else { alist = scm_acons (scm_sym_filename, filename, alist); if (scm_is_null (old_alist)) scm_set_cdr_x (scm_last_alist_filename, alist); } } SCM_RETURN_NEWSMOB3 (scm_tc16_srcprops, SRCPROPMAKPOS (line, col), SCM_UNPACK (copy), SCM_UNPACK (alist)); }
VISIBLE SCM scm_anchor_point_coords_2 (SCM anchor_point) { const char *who = "scm_anchor_point_coords_2"; SCM p = anchor_point; scm_c_assert_list_does_not_end_here (who, anchor_point, p); scm_c_assert_can_be_alist_link (who, anchor_point, p); while (!scm_is_eq (SCM_CAAR (p), scm_symbol__coords ())) { p = SCM_CDR (p); scm_c_assert_list_does_not_end_here (who, anchor_point, p); scm_c_assert_can_be_alist_link (who, anchor_point, p); } return SCM_CDAR (p); }
inline tmscm tmscm_cdar (tmscm obj) { return SCM_CDAR (obj); }