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; }
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; }