- LY_ASSERT_TYPE (is_unpure_pure_container, smob, 1);
- return (SCM) SCM_CELL_WORD_1 (smob);
-}
+public:
+ // Smob procedures unfortunately can only take at most 3 SCM
+ // arguments. Otherwise we could use a "3, 0, 1" call signature and
+ // not require an argument count check of our own.
+ LY_DECLARE_SMOB_PROC (&Unpure_pure_call::call, 2, 0, 1)
+ SCM call (SCM arg1, SCM, SCM rest)
+ {
+ if (!scm_is_pair (rest))
+ scm_wrong_num_args (scm1 ());
+ return scm_apply_1 (scm1 (), arg1, scm_cdr (rest));
+ }
+};