X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fsmobs.tcc;h=818c0900a56bac154476b49282eae6bf529241b8;hb=dea413b36a5c2ba9b01dcab3fa764fa5ab9f8418;hp=940f0032ae975ee47d6f202951f55d30527df825;hpb=be4b87596f425aae78509a6a5f57d4f1eafe5c97;p=lilypond.git diff --git a/lily/include/smobs.tcc b/lily/include/smobs.tcc index 940f0032ae..818c0900a5 100644 --- a/lily/include/smobs.tcc +++ b/lily/include/smobs.tcc @@ -24,15 +24,13 @@ // 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 template SCM Smob_base::mark_trampoline (SCM arg) { - Super *ptr = Super::unsmob (arg); + Super *ptr = unsmob (arg); if (ptr) return ptr->mark_smob (); return SCM_UNDEFINED; @@ -42,7 +40,7 @@ template int Smob_base::print_trampoline (SCM arg, SCM port, scm_print_state *p) { - Super *ptr = Super::unsmob (arg); + Super *ptr = unsmob (arg); if (ptr) return ptr->print_smob (port, p); return 0; @@ -65,7 +63,7 @@ Smob_base::register_ptr (Super *p) // Defaults, should not actually get called template SCM -Smob_base::mark_smob () +Smob_base::mark_smob () const { return SCM_UNSPECIFIED; } @@ -88,7 +86,7 @@ Smob_base::equal_p (SCM, SCM) template int -Smob_base::print_smob (SCM p, scm_print_state *) +Smob_base::print_smob (SCM p, scm_print_state *) const { scm_puts ("#<", p); scm_puts (smob_name_.c_str (), p); @@ -115,6 +113,9 @@ Scm_init Smob_base::scm_init_ (init); template string Smob_base::smob_name_; +template +const char * const Smob_base::type_p_name_ = 0; + template void Smob_base::init () { @@ -151,11 +152,6 @@ void Smob_base::init () 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