VISIBLE SCM
scm_c_view_t1font_dict_ref (SCM view, const char *key)
{
  const char *who = "scm_c_view_t1font_dict_ref";

  SplineFont *sf = (SplineFont *) scm_c_view_to_SplineFont (view);
  SCM result = SCM_UNDEFINED;
  switch (t1font_key (who, key))
    {
    case _t1font_FontName:
      result = scm_from_string_or_null (sf->fontname);
      break;
    case _t1font_PaintType:
      result = scm_number_to_string (scm_from_int (sf->strokedfont ? 2 : 0),
                                     scm_from_int (10));
      break;
    case _t1font_StrokeWidth:
      result = scm_number_to_string (scm_from_double (sf->strokewidth),
                                     scm_from_int (10));
      break;
    }
  return result;
}
Example #2
0
static SCM pg_format_sql(SCM conn, SCM obj) {
	struct pg_conn *pgc;
	SCM out;
	if (SCM_SMOB_PREDICATE(time_tag, obj)) {
		out = format_time(obj, c2s("'%Y-%m-%d %H:%M:%S'"));
		}
	else if (scm_boolean_p(obj) == SCM_BOOL_T) {
		if (scm_is_true(obj)) out = c2s("'t'");
		else out = c2s("'f'");
		}
	else if (scm_is_number(obj)) {
		out = scm_number_to_string(obj,
			scm_from_signed_integer(10));
		}
	else if (scm_is_symbol(obj)) {
		out = pg_format_sql(conn, scm_symbol_to_string(obj));
		}
	else if (scm_is_string(obj)) {
		if (scm_string_null_p(obj) == SCM_BOOL_T) out = c2s("NULL");
		else {
			char *src = scm_to_utf8_string(obj);
			scm_assert_smob_type(pg_conn_tag, conn);
			pgc = (struct pg_conn *)SCM_SMOB_DATA(conn);
			scm_lock_mutex(pgc->mutex);
			char *sql = PQescapeLiteral(pgc->conn,
					src, strlen(src));
			out = safe_from_utf8(sql);
			scm_unlock_mutex(pgc->mutex);
			free(src);
			PQfreemem(sql);
			}
		}
	else if (scm_is_null(obj)) out = c2s("NULL");
	else out = c2s("NULL");
	scm_remember_upto_here_1(out);
	scm_remember_upto_here_2(conn, obj);
	return out;
	}