Example #1
0
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);
}
Example #3
0
inline tmscm tmscm_cdar (tmscm obj) { return SCM_CDAR (obj); }