From e5f0b799405e6e9b83bb4c333b8487c6ffc4cc2d Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 3 Feb 2007 00:23:45 +0100 Subject: [PATCH] add typecheck to ly_assoc_get --- lily/function-documentation.cc | 1 + lily/general-scheme.cc | 4 +++- lily/include/lily-guile.hh | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lily/function-documentation.cc b/lily/function-documentation.cc index d8e4ddc33b..c5b1387726 100644 --- a/lily/function-documentation.cc +++ b/lily/function-documentation.cc @@ -95,6 +95,7 @@ init_func_doc () ly_add_type_predicate ((void*) &is_direction, "direction"); ly_add_type_predicate ((void*) &is_music_function, "Music_function"); ly_add_type_predicate ((void*) &ly_is_port, "port"); + ly_add_type_predicate ((void*) &ly_cheap_is_list, "list"); ly_add_type_predicate ((void*) &unsmob_global_context, "Global_context"); ly_add_type_predicate ((void*) &unsmob_input, "Input"); ly_add_type_predicate ((void*) &unsmob_moment, "Moment"); diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc index 1d97d4bf8e..7723bd477b 100644 --- a/lily/general-scheme.cc +++ b/lily/general-scheme.cc @@ -138,6 +138,8 @@ LY_DEFINE (ly_assoc_get, "ly:assoc-get", "Return value if KEY in ALIST, else DEFAULT-VALUE " "(or #f if not specified).") { + LY_ASSERT_TYPE(ly_cheap_is_list, alist, 2); + SCM handle = scm_assoc (key, alist); if (scm_is_pair (handle)) return scm_cdr (handle); @@ -150,7 +152,7 @@ LY_DEFINE (ly_assoc_get, "ly:assoc-get", LY_DEFINE (ly_string_substitute, "ly:string-substitute", 3, 0, 0, (SCM a, SCM b, SCM s), - "Replace @var{a} by @var{b} in @var{s}.") + "Replace string @var{a} by string @var{b} in string @var{s}.") { LY_ASSERT_TYPE (scm_is_string, s, 1); LY_ASSERT_TYPE (scm_is_string, b, 2); diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 7349050810..efb283cfc1 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -85,6 +85,7 @@ 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_cheap_is_list (SCM x) { return scm_is_pair (x) || x == SCM_EOL; } 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)); } -- 2.39.2