vector<Box> boxes;
bool parens = to_boolean (me->get_property ("parenthesized"));
+ if (!me->is_live ())
+ return boxes;
SCM scm_style = me->get_property ("style");
if (!scm_is_symbol (scm_style)
&& !to_boolean (me->get_property ("restore-first"))
&& !parens)
{
- Rational alteration = ly_scm2rational (me->get_property ("alteration"));
+ Rational alteration
+ = robust_scm2rational (me->get_property ("alteration"), 0);
if (alteration == FLAT_ALTERATION)
{
Box stem = b;
if (!scm_is_string (glyph_name))
{
me->warning (_f ("Could not find glyph-name for alteration %s",
- ly_scm2rational (alt).to_string ().c_str ()));
+ ly_scm_write_string (alt).c_str ()));
return SCM_EOL;
}
start_key_sig_);
Rational sig_alter = (handle != SCM_BOOL_F)
- ? ly_scm2rational (scm_cdr (handle)) : Rational (0);
+ ? robust_scm2rational (scm_cdr (handle), Rational (0)) : Rational (0);
if (sig_alter == p.get_alteration ())
{
A ly_B2A (B b); */
SCM ly_last (SCM list);
-SCM ly_write2scm (SCM s);
+string ly_scm_write_string (SCM s);
SCM ly_deep_copy (SCM);
SCM ly_truncate_list (int k, SCM lst);
Interval robust_scm2interval (SCM, Drul_array<Real>);
Offset robust_scm2offset (SCM, Offset);
string robust_scm2string (SCM, string);
+Rational robust_scm2rational (SCM, Rational);
SCM ly_quote_scm (SCM s);
SCM ly_hash_table_keys (SCM tab);
SCM ly_assoc_prepend_x (SCM alist, SCM key, SCM val);
+inline bool ly_is_fraction (SCM x) { return SCM_FRACTIONP(x) || scm_is_integer (x); }
+
inline bool ly_is_list (SCM x) { return SCM_NFALSEP (scm_list_p (x)); }
inline bool ly_is_procedure (SCM x) { return SCM_NFALSEP (scm_procedure_p (x)); }
inline bool ly_is_port (SCM x) { return SCM_NFALSEP (scm_port_p (x)); }
typedef map < Tuple<int, 2>, Skyline> Chord_outline_map;
typedef map < Tuple<int, 2>, Box> Column_extent_map;
typedef map <int, Slice> Position_extent_map;
+
class Tie_formatting_problem
{
Chord_outline_map chord_outlines_;
for (SCM s = last; scm_is_pair (s); s = scm_cdr (s))
{
SCM new_alter_pair = scm_assoc (scm_caar (s), key);
- Rational old_alter = ly_scm2rational (scm_cdar (s));
+ Rational old_alter = robust_scm2rational (scm_cdar (s), 0);
if (new_alter_pair == SCM_BOOL_F
|| extranatural
&& (ly_scm2rational (scm_cdr (new_alter_pair)) - old_alter)*old_alter < Rational (0))
/*
symbols/strings.
*/
-SCM
-ly_write2scm (SCM s)
+string
+ly_scm_write_string (SCM s)
{
SCM port = scm_mkstrport (SCM_INUM0,
scm_make_string (SCM_INUM0, SCM_UNDEFINED),
// scm_apply (write, port, SCM_EOL);
scm_call_2 (write, s, port);
- return scm_strport_to_string (port);
+ return ly_scm2string (scm_strport_to_string (port));
}
SCM
string
print_scm_val (SCM val)
{
- string realval = ly_scm2string (ly_write2scm (val));
+ string realval = ly_scm_write_string (val);
if (realval.length () > 200)
realval = realval.substr (0, 100)
+ "\n :\n :\n"
scm_to_int (scm_denominator (r)));
}
+Rational
+robust_scm2rational (SCM n, Rational rat)
+{
+ if (ly_is_fraction (n))
+ return ly_scm2rational (n);
+ else
+ return rat;
+}
SCM
alist_to_hashq (SCM alist)
return ly_string_array_to_scm (string_split (s, ' '));
}
-
-bool
-ly_is_fraction (SCM x)
-{
- return SCM_FRACTIONP(x);
-}
-
+/* GDB debugging. */
struct ly_t_double_cell
{
SCM a;