From 6a7c432f7a33081e18cd4a911c459cc8c805e35d Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Tue, 3 Nov 2015 18:22:20 +0100 Subject: [PATCH] Implement ly_memv as a sloppy memv variant --- lily/include/lily-guile.hh | 1 + lily/lily-guile.cc | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 34578511b8..d1ca0424bb 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -63,6 +63,7 @@ SCM ly_assoc_cdr (SCM key, SCM alist); SCM ly_assoc_get (SCM key, SCM alist, SCM default_value, SCM strict_checking = SCM_BOOL_F); Interval ly_scm2interval (SCM); Drul_array ly_scm2realdrul (SCM); +SCM ly_memv (SCM, SCM); Slice int_list_to_slice (SCM l); SCM ly_interval2scm (Drul_array); char *ly_scm2str0 (SCM str); diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index bde39214b3..f37380f024 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -529,6 +529,18 @@ display_list (SCM s) return SCM_UNSPECIFIED; } +// Needed as complement to int_list_to_slice since scm_c_memq refuses +// to work with dotted lists. + +SCM +ly_memv (SCM v, SCM l) +{ + for (; scm_is_pair (l); l = scm_cdr (l)) + if (scm_is_true (scm_eqv_p (v, scm_car (l)))) + return l; + return SCM_BOOL_F; +} + Slice int_list_to_slice (SCM l) { -- 2.39.2