#include "source-file.hh"
#include "version.hh"
#include "warn.hh"
+#include "lily-imports.hh"
/*
symbols/strings.
&& ly_is_procedure (type)
&& scm_is_false (scm_call_1 (type, val)))
{
- SCM typefunc = ly_lily_module_constant ("type-name");
- SCM type_name = scm_call_1 (typefunc, type);
+ SCM type_name = Lily::type_name (type);
warning (_f ("type check for `%s' failed; value `%s' must be of type `%s'",
ly_symbol2string (sym).c_str (),
return true;
}
+void
+ly_wrong_smob_arg (bool pred (SCM), SCM var, int number, const char *fun)
+{
+ string type = predicate_to_typename ((void *) pred);
+ if (pred (var))
+ {
+ // Uh oh. unsmob<T> delivered 0, yet
+ // unsmob<T> delivers true. This means that unsmob<T> is a
+ // matching check from a base class of T, but var is of an
+ // incompatible derived type.
+ type = string (_ ("Wrong kind of ")).append (type);
+ }
+ scm_wrong_type_arg_msg (mangle_cxx_identifier (fun).c_str (),
+ number, var, type.c_str ());
+}
+
+
/* some SCM abbrevs
zijn deze nou handig?
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)
{
SCM
ly_hash2alist (SCM tab)
{
- SCM func = ly_lily_module_constant ("hash-table->alist");
- return scm_call_1 (func, tab);
+ return Lily::hash_table_to_alist (tab);
}
/*