// included from smobs.hh, but other template expansion systems might
// make it feasible to compile this only a single time.
-#include "lily-guile-macros.hh"
-#include "smobs.hh"
#include <typeinfo>
template <class Super>
SCM
Smob_base<Super>::mark_trampoline (SCM arg)
{
- Super *ptr = Super::unsmob (arg);
+ Super *ptr = unsmob<Super> (arg);
if (ptr)
return ptr->mark_smob ();
return SCM_UNDEFINED;
int
Smob_base<Super>::print_trampoline (SCM arg, SCM port, scm_print_state *p)
{
- Super *ptr = Super::unsmob (arg);
+ Super *ptr = unsmob<Super> (arg);
if (ptr)
return ptr->print_smob (port, p);
return 0;
// Defaults, should not actually get called
template <class Super>
SCM
-Smob_base<Super>::mark_smob ()
+Smob_base<Super>::mark_smob () const
{
return SCM_UNSPECIFIED;
}
template <class Super>
int
-Smob_base<Super>::print_smob (SCM p, scm_print_state *)
+Smob_base<Super>::print_smob (SCM p, scm_print_state *) const
{
scm_puts ("#<", p);
scm_puts (smob_name_.c_str (), p);
Scm_init Smob_base<Super>::scm_init_ (init);
template <class Super>
-string Smob_base<Super>::smob_name_;
+std::string Smob_base<Super>::smob_name_;
template <class Super>
void Smob_base<Super>::init ()
{
SCM subr = scm_c_define_gsubr (Super::type_p_name_, 1, 0, 0,
(scm_t_subr) smob_p);
- string fundoc = string("Is @var{x} a @code{") + smob_name_
+ std::string fundoc = std::string("Is @var{x} a @code{") + smob_name_
+ "} object?";
ly_add_function_documentation (subr, Super::type_p_name_, "(SCM x)",
fundoc);
scm_c_export (Super::type_p_name_, NULL);
}
ly_add_type_predicate ((void *) is_smob, smob_name_.c_str ());
- if (Super::smob_proc_signature_ >= 0)
- scm_set_smob_apply (smob_tag_,
- (scm_t_subr)Super::smob_proc,
- Super::smob_proc_signature_ >> 8,
- (Super::smob_proc_signature_ >> 4)&0xf,
- Super::smob_proc_signature_ & 0xf);
+ Super::smob_proc_init (smob_tag_);
}
#endif