From: Han-Wen Nienhuys Date: Thu, 13 Oct 2005 23:25:15 +0000 (+0000) Subject: * make/lilypond.fedora.spec.in (Group): add lilypond-internals to X-Git-Tag: release/2.7.13~25 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=cfbe7661413b152a10293f3da7fb412e325254f9;p=lilypond.git * make/lilypond.fedora.spec.in (Group): add lilypond-internals to dist. * lily/tuplet-bracket.cc: check columns of bounds, not bounds themselves. --- diff --git a/ChangeLog b/ChangeLog index 7538e6c56d..bbc1949426 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2005-10-14 Han-Wen Nienhuys + + * make/lilypond.fedora.spec.in (Group): add lilypond-internals to + dist. + + * lily/tuplet-bracket.cc: check columns of bounds, not bounds + themselves. + +2005-10-12 Han-Wen Nienhuys + + * flower/include/virtual-methods.hh (VIRTUAL_COPY_CONSTRUCTOR): + add class_name() method. + + * lily/music-scheme.cc: remove ly:music-name. + 2005-10-11 Jan Nieuwenhuizen * cygwin/postinstall-lilypond.sh: Remove cruft. @@ -8,6 +23,12 @@ 2005-10-11 Han-Wen Nienhuys + * ly/titling-init.ly (evenHeaderMarkup): use space in header on + even header too.6 + + * scm/define-markup-commands.scm (wordwrap-string): bugfix for + MacOS 9 users. + * lily/hara-kiri-group-spanner.cc (consider_suicide): only consider break index for broken spanner. diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh index bf460b9d21..4cca1db2a3 100644 --- a/flower/include/virtual-methods.hh +++ b/flower/include/virtual-methods.hh @@ -25,7 +25,13 @@ demangle_classname (type_info const &); VIRTUAL_COPY_CONSTRUCTOR (Baseclass, Foo); }; */ +#define DECLARE_CLASSNAME(name) \ + virtual const char *class_name () const { \ + return #name; \ +} + #define VIRTUAL_COPY_CONSTRUCTOR(Base, name) \ + DECLARE_CLASSNAME(name);\ virtual Base *clone () const \ { \ return new name (*this); \ diff --git a/lily/audio-element.cc b/lily/audio-element.cc index c0dfcc22f1..67e3360937 100644 --- a/lily/audio-element.cc +++ b/lily/audio-element.cc @@ -19,5 +19,5 @@ Audio_element::~Audio_element () char const * Audio_element::name () const { - return classname (this); + return this->class_name (); } diff --git a/lily/context.cc b/lily/context.cc index dce243596e..7a5eda0b74 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -495,7 +495,7 @@ Context::print_smob (SCM s, SCM port, scm_print_state *) Context *sc = (Context *) SCM_CELL_WORD_1 (s); scm_puts ("#<", port); - scm_puts (classname (sc), port); + scm_puts (sc->class_name (), port); if (Context_def *d = unsmob_context_def (sc->definition_)) { scm_puts (" ", port); diff --git a/lily/font-metric.cc b/lily/font-metric.cc index 48ec34183e..4118cac23b 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -112,7 +112,7 @@ Font_metric::print_smob (SCM s, SCM port, scm_print_state *) { Font_metric *m = unsmob_metrics (s); scm_puts ("#<", port); - scm_puts (classname (m), port); + scm_puts (m->class_name (), port); scm_puts (" ", port); scm_write (m->description_, port); scm_puts (">", port); diff --git a/lily/grob.cc b/lily/grob.cc index 3a019cea6e..cf3b52d935 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -534,7 +534,7 @@ Grob::name () const SCM meta = get_property ("meta"); SCM nm = scm_assoc (ly_symbol2scm ("name"), meta); nm = (scm_is_pair (nm)) ? scm_cdr (nm) : SCM_EOL; - return scm_is_symbol (nm) ? ly_symbol2string (nm) : classname (this); + return scm_is_symbol (nm) ? ly_symbol2string (nm) : this->class_name (); } void diff --git a/lily/include/afm.hh b/lily/include/afm.hh index 7f436f470a..80d2917236 100644 --- a/lily/include/afm.hh +++ b/lily/include/afm.hh @@ -1,4 +1,3 @@ - /* afm.hh -- declare Adobe_font_metric @@ -19,6 +18,7 @@ using namespace std; class Adobe_font_metric : public Simple_font_metric { + DECLARE_CLASSNAME(Adobe_font_metric); public: AFM_Font_info *font_info_; unsigned int checksum_; diff --git a/lily/include/audio-element.hh b/lily/include/audio-element.hh index 7004d5f27f..5eebc03355 100644 --- a/lily/include/audio-element.hh +++ b/lily/include/audio-element.hh @@ -16,6 +16,7 @@ class Audio_element public: Audio_element (); virtual ~Audio_element (); + VIRTUAL_COPY_CONSTRUCTOR(Audio_element,Audio_element); virtual char const *name () const; protected: }; diff --git a/lily/include/context.hh b/lily/include/context.hh index ca7a40b560..faf6491eb8 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -14,6 +14,7 @@ using namespace std; #include "moment.hh" #include "lily-proto.hh" +#include "virtual-methods.hh" class Context { @@ -21,7 +22,7 @@ class Context Context (Context const &src); DECLARE_SMOBS (Context, dummy); - + DECLARE_CLASSNAME(Context); void terminate (); private: diff --git a/lily/include/font-metric.hh b/lily/include/font-metric.hh index a8846aa568..69e2033d97 100644 --- a/lily/include/font-metric.hh +++ b/lily/include/font-metric.hh @@ -12,9 +12,12 @@ #include "box.hh" #include "lily-proto.hh" #include "smobs.hh" +#include "virtual-methods.hh" class Font_metric { + DECLARE_CLASSNAME(Font_metric); + public: SCM description_; String file_name_; @@ -52,6 +55,7 @@ int get_encoded_index (Font_metric *m, String input_coding, int code); class Simple_font_metric : public Font_metric { + DECLARE_CLASSNAME(Simple_font_metric); public: }; diff --git a/lily/include/global-context.hh b/lily/include/global-context.hh index 720147e03d..647ec914d0 100644 --- a/lily/include/global-context.hh +++ b/lily/include/global-context.hh @@ -17,6 +17,8 @@ class Global_context : public virtual Context PQueue extra_mom_pq_; Output_def *output_def_; + DECLARE_CLASSNAME(Global_context); + friend class Output_def; public: Global_context (Output_def *, Moment final, Object_key *key); diff --git a/lily/include/grob.hh b/lily/include/grob.hh index 0ab69e1aaf..40446590a2 100644 --- a/lily/include/grob.hh +++ b/lily/include/grob.hh @@ -50,6 +50,7 @@ protected: void substitute_object_links (SCM, SCM); char status_; + DECLARE_CLASSNAME(Grob); public: Object_key const *get_key () const; @@ -65,7 +66,7 @@ public: virtual Grob *clone (int count) const; DECLARE_SCHEME_CALLBACK (stencil_extent, (SCM smob, SCM axis)); - + String name () const; /* Properties diff --git a/lily/include/item.hh b/lily/include/item.hh index 9b50af6db3..94ca0bc049 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -21,6 +21,7 @@ class Item : public Grob { Drul_array broken_to_drul_; + DECLARE_CLASSNAME(Item); public: Item (SCM, Object_key const *); Item (Item const &, int count); diff --git a/lily/include/open-type-font.hh b/lily/include/open-type-font.hh index e75b4c62d4..097f661a65 100644 --- a/lily/include/open-type-font.hh +++ b/lily/include/open-type-font.hh @@ -31,6 +31,7 @@ class Open_type_font : public Font_metric Index_to_charcode_map index_to_charcode_map_; Open_type_font (FT_Face); + DECLARE_CLASSNAME(Open_type_font); public: SCM get_subfonts () const; SCM get_global_table () const; diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index d1042348e9..4a0110013d 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -31,6 +31,8 @@ class Spanner : public Grob Drul_array spanned_drul_; int break_index_; + DECLARE_CLASSNAME(Spanner); + public: DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); diff --git a/lily/include/tfm.hh b/lily/include/tfm.hh index 32f1222589..12648f5812 100644 --- a/lily/include/tfm.hh +++ b/lily/include/tfm.hh @@ -142,6 +142,7 @@ struct Tex_font_char_metric class Tex_font_metric : public Simple_font_metric { + DECLARE_CLASSNAME(Tex_font_metric); public: static SCM make_tfm (String file_name); diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 3e13665a36..ad1001cbd7 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -473,5 +473,5 @@ Midi_track::data_string () const char const * Midi_item::name () const { - return classname (this); + return this->class_name (); } diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 600eb2e702..6b29d2bc2f 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -207,7 +207,7 @@ Music_iterator::print_smob (SCM sm, SCM port, scm_print_state*) char s[1000]; Music_iterator *iter = unsmob_iterator (sm); - sprintf (s, "#<%s>", classname (iter)); + sprintf (s, "#<%s>", iter->class_name ()); scm_puts (s, port); return 1; } diff --git a/lily/music-output.cc b/lily/music-output.cc index 21e86e4c6c..cd5d762ae1 100644 --- a/lily/music-output.cc +++ b/lily/music-output.cc @@ -48,7 +48,7 @@ Music_output::print_smob (SCM s, SCM p, scm_print_state*) { Music_output *sc = (Music_output *) SCM_CELL_WORD_1 (s); scm_puts ("#<", p); - scm_puts (classname (sc), p); + scm_puts (sc->class_name (), p); scm_puts (">", p); return 1; diff --git a/lily/music-scheme.cc b/lily/music-scheme.cc index f796a451bc..9508c4d661 100644 --- a/lily/music-scheme.cc +++ b/lily/music-scheme.cc @@ -47,16 +47,6 @@ LY_DEFINE (ly_music_set_property, "ly:music-set-property!", return SCM_UNSPECIFIED; } -LY_DEFINE (ly_music_name, "ly:music-name", - 1, 0, 0, (SCM mus), - "Return the name of @var{music}.") -{ - Music *m = unsmob_music (mus); - SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "music"); - - char const *nm = classname (m); - return scm_makfrom0str (nm); -} /* todo: property args */ LY_DEFINE (ly_make_music, "ly:make-music", diff --git a/lily/music.cc b/lily/music.cc index 8ab9028da0..278caa1343 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -38,7 +38,7 @@ Music::name () const if (scm_is_symbol (nm)) return ly_symbol2string (nm); else - return classname (this); + return "Music"; } Music::Music (SCM init) @@ -142,7 +142,7 @@ Music::print_smob (SCM s, SCM p, scm_print_state*) if (scm_is_symbol (nm) || scm_is_string (nm)) scm_display (nm, p); else - scm_puts (classname (m), p); + scm_puts ("Music", p); /* Printing properties takes a lot of time, especially during backtraces. For inspecting, it is better to explicitly use an inspection diff --git a/lily/output-def.cc b/lily/output-def.cc index c3f1955b76..73d646b2d3 100644 --- a/lily/output-def.cc +++ b/lily/output-def.cc @@ -90,7 +90,7 @@ Output_def::print_smob (SCM s, SCM p, scm_print_state *) { Output_def * def = unsmob_output_def (s); scm_puts ("#< ", p); - scm_puts (classname (def), p); + scm_puts (def->class_name (), p); (void)def; scm_puts (">", p); diff --git a/lily/output-property-music-iterator.cc b/lily/output-property-music-iterator.cc index 1af4868d49..462d7c6714 100644 --- a/lily/output-property-music-iterator.cc +++ b/lily/output-property-music-iterator.cc @@ -27,7 +27,7 @@ Output_property_music_iterator::process (Moment m) bool accepted = try_music (get_music ()); if (!accepted) get_music ()->origin ()->warning (_f ("junking event: `%s'", - classname (get_music ()))); + get_music (->class_name ()))); } Simple_music_iterator::process (m); } diff --git a/lily/paper-book.cc b/lily/paper-book.cc index 3ba7bef6b3..99be33aded 100644 --- a/lily/paper-book.cc +++ b/lily/paper-book.cc @@ -58,7 +58,7 @@ Paper_book::print_smob (SCM smob, SCM port, scm_print_state*) Paper_book *b = (Paper_book *) SCM_CELL_WORD_1 (smob); scm_puts ("#<", port); - scm_puts (classname (b), port); + scm_puts (b->class_name (), port); scm_puts (" ", port); scm_puts (">", port); return 1; diff --git a/lily/paper-system.cc b/lily/paper-system.cc index 66b04c38b2..064b91f6c9 100644 --- a/lily/paper-system.cc +++ b/lily/paper-system.cc @@ -51,7 +51,7 @@ Paper_system::print_smob (SCM smob, SCM port, scm_print_state*) { Paper_system *p = (Paper_system *) SCM_CELL_WORD_1 (smob); scm_puts ("#<", port); - scm_puts (classname (p), port); + scm_puts ("Paper_system", port); scm_display (p->mutable_property_alist_, port); scm_display (p->immutable_property_alist_, port); diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc index 728dd00271..593eb2c26a 100644 --- a/lily/translator-ctors.cc +++ b/lily/translator-ctors.cc @@ -33,7 +33,7 @@ add_translator (Translator *t) if (!global_translator_dict) global_translator_dict = new Scheme_hash_table; - SCM k = ly_symbol2scm (classname (t)); + SCM k = ly_symbol2scm (t->class_name ()); global_translator_dict->set (k, t->self_scm ()); t->unprotect (); diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 5bf64576eb..2646dba0f8 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -220,7 +220,7 @@ Translator_group::print_smob (SCM s, 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 (" >", port); return 1; diff --git a/lily/translator-scheme.cc b/lily/translator-scheme.cc index 4266e5cf8e..0b484375d5 100644 --- a/lily/translator-scheme.cc +++ b/lily/translator-scheme.cc @@ -17,7 +17,7 @@ LY_DEFINE (ly_translator_name, "ly:translator-name", { Translator *tr = unsmob_translator (trans); SCM_ASSERT_TYPE (tr, trans, SCM_ARG1, __FUNCTION__, "Translator"); - char const *nm = classname (tr); + char const *nm = tr->class_name (); return ly_symbol2scm (nm); } diff --git a/lily/translator.cc b/lily/translator.cc index c301956d3f..b78c9c4425 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -151,7 +151,7 @@ Translator::print_smob (SCM s, SCM port, scm_print_state *) { Translator *me = (Translator *) SCM_CELL_WORD_1 (s); scm_puts ("#class_name (), port); scm_puts (" >", port); return 1; } diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index 983f98f937..209545797f 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -67,20 +67,24 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, Link_array const &cols, bool || me->get_bound (RIGHT)->break_status_dir ()) return 0; - Grob *s1 = Note_column::get_stem (cols[0]); - Grob *s2 = Note_column::get_stem (cols.top ()); + Drul_array stems (Note_column::get_stem (cols[0]), + Note_column::get_stem (cols.top ())); - if (s2 != me->get_bound (RIGHT)) + if (dynamic_cast (stems[RIGHT])->get_column () + != me->get_bound (RIGHT)->get_column()) return 0; - Grob *b1 = s1 ? Stem::get_beam (s1) : 0; - Grob *b2 = s2 ? Stem::get_beam (s2) : 0; - + Drul_array beams; + Direction d = LEFT; + do { + beams[d] = stems[d] ? Stem::get_beam (stems[d]) : 0; + } while (flip (&d) != LEFT); + *equally_long = false; - if (! (b1 && (b1 == b2) && !me->is_broken ())) + if (! (beams[LEFT] && (beams[LEFT] == beams[RIGHT]) && !me->is_broken ())) return 0; - extract_grob_set (b1, "stems", beam_stems); + extract_grob_set (beams[LEFT], "stems", beam_stems); if (beam_stems.size () == 0) { programming_error ("beam under tuplet bracket has no stems"); @@ -88,8 +92,8 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, Link_array const &cols, bool return 0; } - *equally_long = (beam_stems[0] == s1 && beam_stems.top () == s2); - return b1; + *equally_long = (beam_stems[0] == stems[LEFT] && beam_stems.top () == stems[RIGHT]); + return beams[LEFT]; } /* @@ -128,7 +132,6 @@ Tuplet_bracket::print (SCM smob) bool equally_long = false; Grob *par_beam = parallel_beam (me, columns, &equally_long); - Spanner *sp = dynamic_cast (me); bool bracket_visibility = !(par_beam && equally_long); diff --git a/ly/titling-init.ly b/ly/titling-init.ly index 4e155b0dc0..be15aa070f 100644 --- a/ly/titling-init.ly +++ b/ly/titling-init.ly @@ -116,7 +116,7 @@ evenHeaderMarkup = \markup \fill-line { \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string \on-the-fly #not-first-page \fromproperty #'header:instrument - "" + " " } oddFooterMarkup = \markup { diff --git a/make/lilypond.fedora.spec.in b/make/lilypond.fedora.spec.in index be2d56bad8..527ead0023 100644 --- a/make/lilypond.fedora.spec.in +++ b/make/lilypond.fedora.spec.in @@ -101,8 +101,9 @@ gzip -9fn `find $RPM_BUILD_ROOT%{_infodir}/ -name '*.info'` touch /tmp/.lilypond-install %if %{info} -/sbin/install-info %{_infodir}/lilypond/lilypond.info.gz %{_infodir}/dir -/sbin/install-info %{_infodir}/lilypond/music-glossary.info.gz %{_infodir}/dir + /sbin/install-info %{_infodir}/lilypond/lilypond.info.gz %{_infodir}/dir + /sbin/install-info %{_infodir}/lilypond/lilypond-internals.info.gz %{_infodir}/dir + /sbin/install-info %{_infodir}/lilypond/music-glossary.info.gz %{_infodir}/dir %endif export PACKAGEDIR=%{_datadir}/lilypond/@TOPLEVEL_VERSION@ @@ -129,6 +130,7 @@ fi %if %{info} /sbin/install-info --delete %{_infodir}/lilypond/lilypond.info.gz %{_infodir}/dir + /sbin/install-info --delete %{_infodir}/lilypond/lilypond-internals.info.gz %{_infodir}/dir /sbin/install-info --delete %{_infodir}/lilypond/music-glossary.info.gz %{_infodir}/dir %endif diff --git a/scm/safe-lily.scm b/scm/safe-lily.scm index d5851fd20b..fc483d2f57 100644 --- a/scm/safe-lily.scm +++ b/scm/safe-lily.scm @@ -83,7 +83,6 @@ ly:music-length ly:music-list? ly:music-mutable-properties - ly:music-name ly:music-property ly:make-score ly:music-set-property!