From 8cd6c7945283badb27640b3a0020808ace14a27a Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Wed, 8 Oct 2014 13:10:33 +0200 Subject: [PATCH] Issue 4158: Turn Smob_base<>::print_smob into member functions Using a trampoline here leads to a more natural form of the print_smob function. --- lily/context-def.cc | 8 +++----- lily/context-mod.cc | 6 ++---- lily/context.cc | 14 ++++++-------- lily/dispatcher.cc | 5 ++--- lily/duration.cc | 6 ++---- lily/font-metric.cc | 7 +++---- lily/grob-array.cc | 8 +++----- lily/grob-smob.cc | 6 ++---- lily/include/context-def.hh | 2 +- lily/include/context-mod.hh | 2 +- lily/include/context.hh | 2 +- lily/include/dispatcher.hh | 2 +- lily/include/duration.hh | 2 +- lily/include/font-metric.hh | 2 +- lily/include/grob-array.hh | 2 +- lily/include/grob.hh | 2 +- lily/include/input.hh | 2 +- lily/include/lily-lexer.hh | 2 +- lily/include/lily-parser.hh | 2 +- lily/include/moment.hh | 2 +- lily/include/music-function.hh | 2 +- lily/include/music-iterator.hh | 2 +- lily/include/music-output.hh | 2 +- lily/include/output-def.hh | 2 +- lily/include/pitch.hh | 2 +- lily/include/prob.hh | 2 +- lily/include/scheme-listener.hh | 2 +- lily/include/scm-hash.hh | 2 +- lily/include/simple-closure.hh | 2 +- lily/include/skyline-pair.hh | 1 - lily/include/smobs.hh | 8 ++------ lily/include/smobs.tcc | 11 +++++++++-- lily/include/source-file.hh | 2 +- lily/include/stencil.hh | 1 - lily/include/translator-group.hh | 2 +- lily/include/translator.hh | 2 +- lily/include/unpure-pure-container.hh | 2 +- lily/input-smob.cc | 4 ++-- lily/lily-lexer.cc | 6 ++---- lily/lily-parser.cc | 7 +++---- lily/moment.cc | 6 ++---- lily/music-function.cc | 4 ++-- lily/music-iterator.cc | 5 ++--- lily/music-output.cc | 5 ++--- lily/output-def.cc | 5 ++--- lily/pitch.cc | 5 ++--- lily/prob.cc | 11 +++++------ lily/scheme-listener.cc | 5 ++--- lily/scm-hash.cc | 6 ++---- lily/simple-closure.cc | 4 ++-- lily/skyline-pair.cc | 10 ---------- lily/source-file.cc | 6 ++---- lily/stencil.cc | 8 -------- lily/translator-group.cc | 7 +++---- lily/translator.cc | 5 ++--- lily/undead.cc | 8 +++----- lily/unpure-pure-container.cc | 9 ++++----- 57 files changed, 103 insertions(+), 154 deletions(-) diff --git a/lily/context-def.cc b/lily/context-def.cc index 24803a5d94..ec80878b2d 100644 --- a/lily/context-def.cc +++ b/lily/context-def.cc @@ -84,14 +84,12 @@ Context_def::~Context_def () const char Context_def::type_p_name_[] = "ly:context-def?"; int -Context_def::print_smob (SCM smob, SCM port, scm_print_state *) +Context_def::print_smob (SCM port, scm_print_state *) { - Context_def *me = (Context_def *) SCM_CELL_WORD_1 (smob); - scm_puts ("#context_name_, port); + scm_display (context_name_, port); scm_puts (" ", port); - string loc = me->origin ()->location_string (); + string loc = origin ()->location_string (); scm_puts (loc.c_str (), port); scm_puts (">", port); return 1; diff --git a/lily/context-mod.cc b/lily/context-mod.cc index 16910aa37e..f72cb8b404 100644 --- a/lily/context-mod.cc +++ b/lily/context-mod.cc @@ -37,12 +37,10 @@ Context_mod::Context_mod (SCM mod_list) const char Context_mod::type_p_name_[] = "ly:context-mod?"; int -Context_mod::print_smob (SCM smob, SCM port, scm_print_state *) +Context_mod::print_smob (SCM port, scm_print_state *) { - Context_mod *me = (Context_mod *) SCM_CELL_WORD_1 (smob); - scm_puts ("#get_mods (), port); + scm_display (get_mods (), port); scm_puts (">", port); return 1; } diff --git a/lily/context.cc b/lily/context.cc index 3128f5955a..8397875fdf 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -663,27 +663,25 @@ Context::now_mom () const } int -Context::print_smob (SCM s, SCM port, scm_print_state *) +Context::print_smob (SCM port, scm_print_state *) { - Context *sc = (Context *) SCM_CELL_WORD_1 (s); - scm_puts ("#<", port); - scm_puts (sc->class_name (), port); - if (Context_def *d = Context_def::unsmob (sc->definition_)) + scm_puts (class_name (), port); + if (Context_def *d = Context_def::unsmob (definition_)) { scm_puts (" ", port); scm_display (d->get_context_name (), port); } - if (!sc->id_string_.empty ()) + if (!id_string_.empty ()) { scm_puts ("=", port); - scm_puts (sc->id_string_.c_str (), port); + scm_puts (id_string_.c_str (), port); } scm_puts (" ", port); - scm_display (sc->context_list_, port); + scm_display (context_list_, port); scm_puts (" >", port); return 1; diff --git a/lily/dispatcher.cc b/lily/dispatcher.cc index 41f3237651..51162e88b4 100644 --- a/lily/dispatcher.cc +++ b/lily/dispatcher.cc @@ -49,12 +49,11 @@ Dispatcher::mark_smob () } int -Dispatcher::print_smob (SCM s, SCM p, scm_print_state *) +Dispatcher::print_smob (SCM p, scm_print_state *) { - Dispatcher *me = (Dispatcher *) SCM_CELL_WORD_1 (s); scm_puts ("#alist"), - me->listeners_), p); + listeners_), p); scm_puts (">", p); return 1; } diff --git a/lily/duration.cc b/lily/duration.cc index afc615cdb0..7c45ef700b 100644 --- a/lily/duration.cc +++ b/lily/duration.cc @@ -140,12 +140,10 @@ const char Duration::type_p_name_[] = "ly:duration?"; int -Duration::print_smob (SCM s, SCM port, scm_print_state *) +Duration::print_smob (SCM port, scm_print_state *) { - Duration *r = (Duration *) SCM_CELL_WORD_1 (s); - scm_puts ("#to_string ()), port); + scm_display (ly_string2scm (to_string ()), port); scm_puts (" >", port); return 1; diff --git a/lily/font-metric.cc b/lily/font-metric.cc index 899d80f821..a7f934143e 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -101,13 +101,12 @@ Font_metric::mark_smob () } int -Font_metric::print_smob (SCM s, SCM port, scm_print_state *) +Font_metric::print_smob (SCM port, scm_print_state *) { - Font_metric *m = Font_metric::unsmob (s); scm_puts ("#<", port); - scm_puts (m->class_name (), port); + scm_puts (class_name (), port); scm_puts (" ", port); - scm_write (m->description_, port); + scm_write (description_, port); scm_puts (">", port); return 1; } diff --git a/lily/grob-array.cc b/lily/grob-array.cc index 908ff6334b..308f057242 100644 --- a/lily/grob-array.cc +++ b/lily/grob-array.cc @@ -62,14 +62,12 @@ Grob_array::mark_smob () } int -Grob_array::print_smob (SCM arr, SCM port, scm_print_state *) +Grob_array::print_smob (SCM port, scm_print_state *) { scm_puts ("#size (); i++) + for (vsize i = 0; i < size (); i++) { - scm_display (grob_arr->grob (i)->self_scm (), port); + scm_display (grob (i)->self_scm (), port); scm_puts (" ", port); } scm_puts (">", port); diff --git a/lily/grob-smob.cc b/lily/grob-smob.cc index dc7082e3d5..3558d4415a 100644 --- a/lily/grob-smob.cc +++ b/lily/grob-smob.cc @@ -50,12 +50,10 @@ Grob::mark_smob () } int -Grob::print_smob (SCM s, SCM port, scm_print_state *) +Grob::print_smob (SCM port, scm_print_state *) { - Grob *sc = (Grob *) SCM_CELL_WORD_1 (s); - scm_puts ("#name ().c_str (), port); + scm_puts ((char *) name ().c_str (), port); /* Do not print properties, that is too much hassle. */ scm_puts (" >", port); diff --git a/lily/include/context-def.hh b/lily/include/context-def.hh index ba1aad2f2b..caf44894ea 100644 --- a/lily/include/context-def.hh +++ b/lily/include/context-def.hh @@ -34,7 +34,7 @@ struct Context_def : public Smob { SCM mark_smob (); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; virtual ~Context_def (); private: diff --git a/lily/include/context-mod.hh b/lily/include/context-mod.hh index 665dc3b64f..72ad0a5e9f 100644 --- a/lily/include/context-mod.hh +++ b/lily/include/context-mod.hh @@ -37,7 +37,7 @@ struct Context_mod : public Simple_smob { SCM mark_smob (); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; private: SCM mods_; diff --git a/lily/include/context.hh b/lily/include/context.hh index 150996c4e4..06d0cf10d2 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -32,7 +32,7 @@ class Context : public Smob { public: SCM mark_smob (); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; virtual ~Context (); private: diff --git a/lily/include/dispatcher.hh b/lily/include/dispatcher.hh index 5532d935fc..1f5f41243b 100644 --- a/lily/include/dispatcher.hh +++ b/lily/include/dispatcher.hh @@ -26,7 +26,7 @@ class Dispatcher : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Dispatcher (); diff --git a/lily/include/duration.hh b/lily/include/duration.hh index 1eed866409..c46d03614b 100644 --- a/lily/include/duration.hh +++ b/lily/include/duration.hh @@ -28,7 +28,7 @@ struct Duration : public Simple_smob { static SCM equal_p (SCM, SCM); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; Duration (); Duration (int, int); diff --git a/lily/include/font-metric.hh b/lily/include/font-metric.hh index e5a2b236be..927d9bb678 100644 --- a/lily/include/font-metric.hh +++ b/lily/include/font-metric.hh @@ -33,7 +33,7 @@ typedef std::map Index_to_charcode_map; class Font_metric : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Font_metric (); diff --git a/lily/include/grob-array.hh b/lily/include/grob-array.hh index 093b2d6bdc..b32d0032a3 100644 --- a/lily/include/grob-array.hh +++ b/lily/include/grob-array.hh @@ -27,7 +27,7 @@ class Grob_array : public Simple_smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; private: diff --git a/lily/include/grob.hh b/lily/include/grob.hh index 10d8c794eb..f5c6ac96e5 100644 --- a/lily/include/grob.hh +++ b/lily/include/grob.hh @@ -30,7 +30,7 @@ class Grob : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Grob (); diff --git a/lily/include/input.hh b/lily/include/input.hh index 12c3485b11..43dff1e4b9 100644 --- a/lily/include/input.hh +++ b/lily/include/input.hh @@ -33,7 +33,7 @@ class Input : public Simple_smob Source_file *source_file_; public: static const char type_p_name_[]; - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static SCM equal_p (SCM, SCM); SCM mark_smob (); Source_file *get_source_file () const; diff --git a/lily/include/lily-lexer.hh b/lily/include/lily-lexer.hh index eb57de8f6a..a3dbe62dff 100644 --- a/lily/include/lily-lexer.hh +++ b/lily/include/lily-lexer.hh @@ -34,7 +34,7 @@ void set_lexer (); class Lily_lexer : public Smob, public Includable_lexer { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Lily_lexer (); diff --git a/lily/include/lily-parser.hh b/lily/include/lily-parser.hh index 0255b46074..589562fc14 100644 --- a/lily/include/lily-parser.hh +++ b/lily/include/lily-parser.hh @@ -32,7 +32,7 @@ class Lily_parser : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Lily_parser (); diff --git a/lily/include/moment.hh b/lily/include/moment.hh index da3542f964..63048a3a75 100644 --- a/lily/include/moment.hh +++ b/lily/include/moment.hh @@ -31,7 +31,7 @@ class Moment : public Simple_smob { public: static SCM equal_p (SCM, SCM); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; Moment (); Moment (int m); diff --git a/lily/include/music-function.hh b/lily/include/music-function.hh index 2356c3ecef..ef24b63f0e 100644 --- a/lily/include/music-function.hh +++ b/lily/include/music-function.hh @@ -29,7 +29,7 @@ class Music_function : public Smob2 public: static const char type_p_name_[]; SCM mark_smob (); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM get_signature () { return scm1 (); } SCM get_function () { return scm2 (); } }; diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index 9ca076c625..01bff5d59d 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -61,7 +61,7 @@ class Music_iterator : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Music_iterator (); diff --git a/lily/include/music-output.hh b/lily/include/music-output.hh index b9f99f2221..2831d566fc 100644 --- a/lily/include/music-output.hh +++ b/lily/include/music-output.hh @@ -29,7 +29,7 @@ class Music_output : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Music_output (); diff --git a/lily/include/output-def.hh b/lily/include/output-def.hh index dc15ba9d0f..1673c46d5b 100644 --- a/lily/include/output-def.hh +++ b/lily/include/output-def.hh @@ -49,7 +49,7 @@ class Output_def : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Output_def (); diff --git a/lily/include/pitch.hh b/lily/include/pitch.hh index a6e3c3860a..ebf39ed742 100644 --- a/lily/include/pitch.hh +++ b/lily/include/pitch.hh @@ -36,7 +36,7 @@ class Pitch : public Simple_smob { public: static SCM equal_p (SCM, SCM); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; private: diff --git a/lily/include/prob.hh b/lily/include/prob.hh index 793d390b08..e90355c5eb 100644 --- a/lily/include/prob.hh +++ b/lily/include/prob.hh @@ -34,7 +34,7 @@ class Prob : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static SCM equal_p (SCM, SCM); static const char type_p_name_[]; diff --git a/lily/include/scheme-listener.hh b/lily/include/scheme-listener.hh index 00242083fd..03652534f2 100644 --- a/lily/include/scheme-listener.hh +++ b/lily/include/scheme-listener.hh @@ -29,7 +29,7 @@ class Scheme_listener : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); virtual ~Scheme_listener (); Scheme_listener (SCM callback); diff --git a/lily/include/scm-hash.hh b/lily/include/scm-hash.hh index eea2d1436a..6c390be8f5 100644 --- a/lily/include/scm-hash.hh +++ b/lily/include/scm-hash.hh @@ -46,7 +46,7 @@ class Scheme_hash_table : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); virtual ~Scheme_hash_table (); bool try_retrieve (SCM key, SCM *val); diff --git a/lily/include/simple-closure.hh b/lily/include/simple-closure.hh index 3ce4f20d94..f6a2cfdf58 100644 --- a/lily/include/simple-closure.hh +++ b/lily/include/simple-closure.hh @@ -27,7 +27,7 @@ class Simple_closure : public Smob1 { public: SCM expression() const { return scm1 (); } - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; }; diff --git a/lily/include/skyline-pair.hh b/lily/include/skyline-pair.hh index 26f2542e0a..73b5586029 100644 --- a/lily/include/skyline-pair.hh +++ b/lily/include/skyline-pair.hh @@ -25,7 +25,6 @@ class Skyline_pair : public Simple_smob { public: - static int print_smob (SCM, SCM, scm_print_state *); static const char type_p_name_[]; private: Drul_array skylines_; diff --git a/lily/include/smobs.hh b/lily/include/smobs.hh index bc4b61d7fd..2d1cbd4d89 100644 --- a/lily/include/smobs.hh +++ b/lily/include/smobs.hh @@ -179,12 +179,8 @@ private: static SCM mark_trampoline (SCM); // Used for calling mark_smob static size_t free_smob (SCM obj); static SCM equal_p (SCM, SCM); - - // print_smob is the exception. It is unconditionally passed to - // GUILE since the default output of, say, # - // would depend on memory layout, thus being unsuitable for regtest - // comparisons unless filtered. - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); + static int print_trampoline (SCM, SCM, scm_print_state *); // type_p_name_ can be overriden in the Super class with a static // const char [] string. This requires both a declaration in the diff --git a/lily/include/smobs.tcc b/lily/include/smobs.tcc index f927d481d4..0838a791b2 100644 --- a/lily/include/smobs.tcc +++ b/lily/include/smobs.tcc @@ -35,6 +35,13 @@ Smob_base::mark_trampoline (SCM arg) return (Super::unsmob (arg))->mark_smob (); } +template +int +Smob_base::print_trampoline (SCM arg, SCM port, scm_print_state *p) +{ + return (Super::unsmob (arg))->print_smob (port, p); +} + template SCM Smob_base::register_ptr (Super *p) @@ -75,7 +82,7 @@ Smob_base::equal_p (SCM, SCM) template int -Smob_base::print_smob (SCM, SCM p, scm_print_state *) +Smob_base::print_smob (SCM p, scm_print_state *) { scm_puts ("#<", p); scm_puts (smob_name_.c_str (), p); @@ -123,7 +130,7 @@ void Smob_base::init () scm_set_smob_free (smob_tag_, Super::free_smob); if (&Super::mark_smob != &Smob_base::mark_smob) scm_set_smob_mark (smob_tag_, Super::mark_trampoline); - scm_set_smob_print (smob_tag_, Super::print_smob); + scm_set_smob_print (smob_tag_, Super::print_trampoline); if (&Super::equal_p != &Smob_base::equal_p) scm_set_smob_equalp (smob_tag_, Super::equal_p); if (Super::type_p_name_ != 0) diff --git a/lily/include/source-file.hh b/lily/include/source-file.hh index 8dfbab6c62..3c21e1df6e 100644 --- a/lily/include/source-file.hh +++ b/lily/include/source-file.hh @@ -38,7 +38,7 @@ using namespace std; class Source_file : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Source_file (); diff --git a/lily/include/stencil.hh b/lily/include/stencil.hh index ad686dcfe7..4f1bceaec4 100644 --- a/lily/include/stencil.hh +++ b/lily/include/stencil.hh @@ -59,7 +59,6 @@ class Stencil : public Simple_smob { public: SCM mark_smob (); - static int print_smob (SCM, SCM, scm_print_state *); static const char type_p_name_[]; private: Box dim_; diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index 1c907ef25f..40152b320b 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -51,7 +51,7 @@ class Translator_group : public Smob { public: SCM mark_smob (); - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); static const char type_p_name_[]; virtual ~Translator_group (); private: diff --git a/lily/include/translator.hh b/lily/include/translator.hh index f7b9677a00..885198a720 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -120,7 +120,7 @@ enum Translator_precompute_index class Translator : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; virtual ~Translator (); diff --git a/lily/include/unpure-pure-container.hh b/lily/include/unpure-pure-container.hh index 8e4733ad16..cff9d6fb3c 100644 --- a/lily/include/unpure-pure-container.hh +++ b/lily/include/unpure-pure-container.hh @@ -39,7 +39,7 @@ public: return Smob2::make_smob (a, a); return Smob2::make_smob (a, b); } - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); }; #endif /* UNPURE_PURE_CONTAINER_HH */ diff --git a/lily/input-smob.cc b/lily/input-smob.cc index 4439955af4..7ed92deab5 100644 --- a/lily/input-smob.cc +++ b/lily/input-smob.cc @@ -37,9 +37,9 @@ Input::mark_smob () } int -Input::print_smob (SCM s, SCM port, scm_print_state *) +Input::print_smob (SCM port, scm_print_state *) { - string str = "#location_string () + ">"; + string str = "#"; scm_puts (str.c_str (), port); return 1; } diff --git a/lily/lily-lexer.cc b/lily/lily-lexer.cc index dac09f1cc1..f71c14fcf2 100644 --- a/lily/lily-lexer.cc +++ b/lily/lily-lexer.cc @@ -382,12 +382,10 @@ Lily_lexer::mark_smob () } int -Lily_lexer::print_smob (SCM s, SCM port, scm_print_state *) +Lily_lexer::print_smob (SCM port, scm_print_state *) { - Lily_lexer *lexer = Lily_lexer::unsmob (s); - scm_puts ("#scopes_, port); + scm_display (scopes_, port); scm_puts (" >", port); return 1; } diff --git a/lily/lily-parser.cc b/lily/lily-parser.cc index fd1eb48981..8d0b180e77 100644 --- a/lily/lily-parser.cc +++ b/lily/lily-parser.cc @@ -83,12 +83,11 @@ Lily_parser::mark_smob () } int -Lily_parser::print_smob (SCM s, SCM port, scm_print_state *) +Lily_parser::print_smob (SCM port, scm_print_state *) { scm_puts ("#lexer_) - scm_display (parser->lexer_->self_scm (), port); + if (lexer_) + scm_display (lexer_->self_scm (), port); else scm_puts ("(no lexer yet)", port); scm_puts (" >", port); diff --git a/lily/moment.cc b/lily/moment.cc index b1cf64969f..0ad463c5ad 100644 --- a/lily/moment.cc +++ b/lily/moment.cc @@ -48,12 +48,10 @@ const char Moment::type_p_name_[] = "ly:moment?"; int -Moment::print_smob (SCM s, SCM port, scm_print_state *) +Moment::print_smob (SCM port, scm_print_state *) { - Moment *r = (Moment *) SCM_CELL_WORD_1 (s); - scm_puts ("#to_string (); + string str = to_string (); scm_puts ((char *)str.c_str (), port); scm_puts (">", port); diff --git a/lily/music-function.cc b/lily/music-function.cc index 79d872c43b..6fcb49d2a6 100644 --- a/lily/music-function.cc +++ b/lily/music-function.cc @@ -23,10 +23,10 @@ const char Music_function::type_p_name_[] = "ly:music-function?"; /* Print a textual represenation of the smob to a given port. */ int -Music_function::print_smob (SCM b, SCM port, scm_print_state *) +Music_function::print_smob (SCM port, scm_print_state *) { scm_puts ("#get_function (), port); + scm_write (get_function (), port); scm_puts (">", port); /* Non-zero means success. */ diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 293a91ed4b..372a33ba1c 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -214,12 +214,11 @@ Music_iterator::mark_smob () } int -Music_iterator::print_smob (SCM sm, SCM port, scm_print_state *) +Music_iterator::print_smob (SCM port, scm_print_state *) { char s[1000]; - Music_iterator *iter = Music_iterator::unsmob (sm); - sprintf (s, "#<%s>", iter->class_name ()); + sprintf (s, "#<%s>", class_name ()); scm_puts (s, port); return 1; } diff --git a/lily/music-output.cc b/lily/music-output.cc index 18eb372020..64d8c83983 100644 --- a/lily/music-output.cc +++ b/lily/music-output.cc @@ -49,11 +49,10 @@ Music_output::mark_smob () } int -Music_output::print_smob (SCM s, SCM p, scm_print_state *) +Music_output::print_smob (SCM p, scm_print_state *) { - Music_output *sc = (Music_output *) SCM_CELL_WORD_1 (s); scm_puts ("#<", p); - scm_puts (sc->class_name (), p); + scm_puts (class_name (), p); scm_puts (">", p); return 1; diff --git a/lily/output-def.cc b/lily/output-def.cc index eeb5a7a84c..efbe2b937a 100644 --- a/lily/output-def.cc +++ b/lily/output-def.cc @@ -94,11 +94,10 @@ find_context_def (Output_def const *m, SCM name) } int -Output_def::print_smob (SCM s, SCM p, scm_print_state *) +Output_def::print_smob (SCM p, scm_print_state *) { - Output_def * def = Output_def::unsmob (s); scm_puts ("#< ", p); - scm_puts (def->class_name (), p); + scm_puts (class_name (), p); scm_puts (">", p); return 1; } diff --git a/lily/pitch.cc b/lily/pitch.cc index 08e6556cf6..94c46a2cdb 100644 --- a/lily/pitch.cc +++ b/lily/pitch.cc @@ -227,11 +227,10 @@ Pitch::mark_smob () } int -Pitch::print_smob (SCM s, SCM port, scm_print_state *) +Pitch::print_smob (SCM port, scm_print_state *) { - Pitch *r = (Pitch *) SCM_CELL_WORD_1 (s); scm_puts ("#to_string ()), port); + scm_display (ly_string2scm (to_string ()), port); scm_puts (" >", port); return 1; } diff --git a/lily/prob.cc b/lily/prob.cc index 8829529b7a..918c4d8d70 100644 --- a/lily/prob.cc +++ b/lily/prob.cc @@ -124,16 +124,15 @@ Prob::mark_smob () } int -Prob::print_smob (SCM smob, SCM port, scm_print_state *) +Prob::print_smob (SCM port, scm_print_state *) { - Prob *p = (Prob *) SCM_CELL_WORD_1 (smob); scm_puts ("#<", port); scm_puts ("Prob: ", port); - scm_display (p->type_, port); + scm_display (type_, port); scm_puts (" C++: ", port); - scm_puts (p->class_name (), port); - scm_display (p->mutable_property_alist_, port); - scm_display (p->immutable_property_alist_, port); + scm_puts (class_name (), port); + scm_display (mutable_property_alist_, port); + scm_display (immutable_property_alist_, port); scm_puts (" >\n", port); return 1; diff --git a/lily/scheme-listener.cc b/lily/scheme-listener.cc index 6e567b0aeb..5db5125caa 100644 --- a/lily/scheme-listener.cc +++ b/lily/scheme-listener.cc @@ -41,11 +41,10 @@ Scheme_listener::mark_smob () } int -Scheme_listener::print_smob (SCM obj, SCM p, scm_print_state *) +Scheme_listener::print_smob (SCM p, scm_print_state *) { - Scheme_listener *me = (Scheme_listener *) SCM_CELL_WORD_1 (obj); scm_puts ("#callback_, p); + scm_write (callback_, p); scm_puts (">", p); return 1; } diff --git a/lily/scm-hash.cc b/lily/scm-hash.cc index d946f2964a..91958477eb 100644 --- a/lily/scm-hash.cc +++ b/lily/scm-hash.cc @@ -78,12 +78,10 @@ Scheme_hash_table::mark_smob () } int -Scheme_hash_table::print_smob (SCM s, SCM p, scm_print_state *) +Scheme_hash_table::print_smob (SCM p, scm_print_state *) { - assert (is_smob (s)); scm_puts ("#hash_tab_, p); + scm_display (hash_tab_, p); scm_puts ("> ", p); return 1; } diff --git a/lily/simple-closure.cc b/lily/simple-closure.cc index 74845f5859..de8eb22af1 100644 --- a/lily/simple-closure.cc +++ b/lily/simple-closure.cc @@ -114,10 +114,10 @@ LY_DEFINE (ly_eval_simple_closure, "ly:eval-simple-closure", } int -Simple_closure::print_smob (SCM s, SCM port, scm_print_state *) +Simple_closure::print_smob (SCM port, scm_print_state *) { scm_puts ("#", port); return 1; } diff --git a/lily/skyline-pair.cc b/lily/skyline-pair.cc index f95a5e7b74..205fd889d5 100644 --- a/lily/skyline-pair.cc +++ b/lily/skyline-pair.cc @@ -130,16 +130,6 @@ Skyline_pair::operator [] (Direction d) const const char Skyline_pair::type_p_name_[] = "ly:skyline-pair?"; -int -Skyline_pair::print_smob (SCM s, SCM port, scm_print_state *) -{ - Skyline_pair *r = (Skyline_pair *) SCM_CELL_WORD_1 (s); - (void) r; - - scm_puts ("#", port); - return 1; -} - MAKE_SCHEME_CALLBACK (Skyline_pair, skyline, 2); SCM Skyline_pair::skyline (SCM smob, SCM dir_scm) diff --git a/lily/source-file.cc b/lily/source-file.cc index 849a8f7e6f..fe8635a495 100644 --- a/lily/source-file.cc +++ b/lily/source-file.cc @@ -368,12 +368,10 @@ Source_file::mark_smob () } int -Source_file::print_smob (SCM smob, SCM port, scm_print_state *) +Source_file::print_smob (SCM port, scm_print_state *) { - Source_file *sc = (Source_file *) SCM_CELL_WORD_1 (smob); - scm_puts ("#name_.c_str (), port); + scm_puts (name_.c_str (), port); /* Do not print properties, that is too much hassle. */ scm_puts (" >", port); diff --git a/lily/stencil.cc b/lily/stencil.cc index 1e5e0ad4cc..7be0b5f8af 100644 --- a/lily/stencil.cc +++ b/lily/stencil.cc @@ -38,14 +38,6 @@ Stencil::Stencil (Box b, SCM func) dim_ = b; } -int -Stencil::print_smob (SCM, SCM port, scm_print_state *) -{ - scm_puts ("#", port); - return 1; -} - SCM Stencil::mark_smob () { diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 111b61f138..2f6615f17d 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -347,12 +347,11 @@ Translator_group::~Translator_group () const char Translator_group::type_p_name_[] = "ly:translator-group?"; int -Translator_group::print_smob (SCM s, SCM port, scm_print_state *) +Translator_group::print_smob (SCM port, scm_print_state *) { - Translator_group *me = (Translator_group *) SCM_CELL_WORD_1 (s); scm_puts ("#class_name (), port); - scm_display (me->simple_trans_list_, port); + scm_puts (class_name (), port); + scm_display (simple_trans_list_, port); scm_puts (" >", port); return 1; } diff --git a/lily/translator.cc b/lily/translator.cc index 4b73b7cd54..b2ba4d8768 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -231,11 +231,10 @@ Translator::derived_mark () const } int -Translator::print_smob (SCM s, SCM port, scm_print_state *) +Translator::print_smob (SCM port, scm_print_state *) { - Translator *me = (Translator *) SCM_CELL_WORD_1 (s); scm_puts ("#class_name (), port); + scm_puts (class_name (), port); scm_puts (" >", port); return 1; } diff --git a/lily/undead.cc b/lily/undead.cc index 9105a995ea..d6e3d550d1 100644 --- a/lily/undead.cc +++ b/lily/undead.cc @@ -22,7 +22,7 @@ class Undead : public Simple_smob { public: - static int print_smob (SCM, SCM, scm_print_state *); + int print_smob (SCM, scm_print_state *); SCM mark_smob (); static const char type_p_name_[]; private: @@ -43,12 +43,10 @@ Undead::mark_smob () } int -Undead::print_smob (SCM undead, - SCM port, - scm_print_state *) +Undead::print_smob (SCM port, scm_print_state *) { scm_puts ("#object (), port); + scm_display (object (), port); scm_puts (" >", port); return 1; } diff --git a/lily/unpure-pure-container.cc b/lily/unpure-pure-container.cc index 4c07e31fd2..761d14b7b8 100644 --- a/lily/unpure-pure-container.cc +++ b/lily/unpure-pure-container.cc @@ -74,15 +74,14 @@ LY_DEFINE (ly_unpure_pure_container_pure_part, "ly:unpure-pure-container-pure-pa } int -Unpure_pure_container::print_smob (SCM s, SCM port, scm_print_state *) +Unpure_pure_container::print_smob (SCM port, scm_print_state *) { - Unpure_pure_container *p = Unpure_pure_container::unsmob (s); scm_puts ("#unpure_part (), port); - if (!p->is_unchanging ()) + scm_display (unpure_part (), port); + if (!is_unchanging ()) { scm_puts (" ", port); - scm_display (p->pure_part (), port); + scm_display (pure_part (), port); } scm_puts (" >", port); return 1; -- 2.39.5