]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lily-guile.cc
lily-guile updates and CG: "Scheme->C interface" section.
[lilypond.git] / lily / lily-guile.cc
index ff3f7064bf62d4666d8cc4c8193ea6b2cc8b33af..e9cf0909f28dca40a06930ed12f4eb599524d9fc 100644 (file)
@@ -178,7 +178,7 @@ ly_scm_hash (SCM s)
 bool
 is_axis (SCM s)
 {
-  if (scm_is_number (s))
+  if (scm_is_integer (s))
     {
       int i = scm_to_int (s);
       return i == 0 || i == 1;
@@ -212,7 +212,7 @@ robust_scm2dir (SCM d, Direction def)
 bool
 is_direction (SCM s)
 {
-  if (scm_is_number (s))
+  if (scm_is_integer (s))
     {
       int i = scm_to_int (s);
       return i >= -1 && i <= 1;
@@ -226,7 +226,10 @@ is_direction (SCM s)
 Interval
 ly_scm2interval (SCM p)
 {
-  return Interval (scm_to_double (scm_car (p)), scm_to_double (scm_cdr (p)));
+  return is_number_pair (p) ?
+           Interval (scm_to_double (scm_car (p)),
+                     scm_to_double (scm_cdr (p))) :
+           Interval (0, 0);
 }
 
 Drul_array<Real>
@@ -284,8 +287,10 @@ ly_offset2scm (Offset o)
 Offset
 ly_scm2offset (SCM s)
 {
-  return Offset (scm_to_double (scm_car (s)),
-                 scm_to_double (scm_cdr (s)));
+  return is_number_pair (s) ?
+           Offset (scm_to_double (scm_car (s)),
+                   scm_to_double (scm_cdr (s))) :
+           Offset (0, 0);
 }
 
 Offset
@@ -320,20 +325,19 @@ ly_scm2offsets (SCM s)
 /*
   ALIST
 */
-
+// This one is used nowhere.
 bool
-alist_equal_p (SCM a, SCM b)
+ly_is_alist_equal (SCM a, SCM b)
 {
-  for (SCM s = a;
-       scm_is_pair (s); s = scm_cdr (s))
+  if (!scm_is_pair (a) || !scm_is_pair (b))
+    return false;
+  for (SCM s = a; scm_is_pair (s); s = scm_cdr (s))
     {
       SCM key = scm_caar (s);
       SCM val = scm_cdar (s);
       SCM l = scm_assoc (key, b);
 
-      if (l == SCM_BOOL_F
-          || !ly_is_equal (scm_cdr (l), val))
-
+      if (scm_is_false (l) || !ly_is_equal (scm_cdr (l), val))
         return false;
     }
   return true;