lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue 4365: non-member is_smob<>(), is_derived_smob<>(), etc. (issue 231


From: nine . fierce . ballads
Subject: Issue 4365: non-member is_smob<>(), is_derived_smob<>(), etc. (issue 231680043 by address@hidden)
Date: Wed, 13 May 2015 00:38:39 +0000

Reviewers: ,

Description:
Issue 4365: non-member is_smob<>(), is_derived_smob<>(), etc.

Hide Smob_base<>::is_smob() to prevent the misleading situation of
D::is_smob(S) returning true when S represents an ancestor of D rather
than a D.  This issue was previously worked around by overriding
is_smob in several derived smob classes; that is no longer needed.

For derived smobs, is_derived_smob<>() is required and incorporates a
dynamic cast.  The same distinction applies to unsmob<>() and
derived_unsmob<>().

Smob_base<>::smob_p() is hidden because there doesn't seem to be a
need for it to be public.

Files in lily/include were edited by hand.  Files in lily itself were
processed with the following sed script.

s/\(Engraver\|Global_context\|Item\|Music\|Paper_score\|Performance\| Performer\|Spanner\|Stream_event\)::is_smob/is_derived_smob<\1>/g s/\(Engraver\|Global_context\|Item\|Music\|Paper_score\|Performance\| Performer\|Spanner\|Stream_event\)::unsmob/derived_unsmob<\1>/g
s/LY_ASSERT_SMOB
(\(Engraver\|Global_context\|Item\|Music\|Paper_score\|Performance\| Performer\|Spanner\|Stream_event\),/LY_ASSERT_DERIVED_SMOB
(\1,/g
s/\([A-Za-z_]\+\)::is_smob/is_smob<\1>/g
s/\([A-Za-z_]\+\)::unsmob/unsmob<\1>/g
s/Input \*\([A-Za-z_]\+\) = unsmob /Input *\1 = unsmob<Input> /g

This is an evolution of the idea originally proposed in
https://codereview.appspot.com/236850043/

Please review this at https://codereview.appspot.com/231680043/

Affected files (+1535, -1560 lines):
  M lily/accidental.cc
  M lily/accidental-engraver.cc
  M lily/accidental-placement.cc
  M lily/align-interface.cc
  M lily/all-font-metrics.cc
  M lily/ambitus-engraver.cc
  M lily/arpeggio.cc
  M lily/articulations.cc
  M lily/auto-beam-engraver.cc
  M lily/auto-change-iterator.cc
  M lily/axis-group-engraver.cc
  M lily/axis-group-interface.cc
  M lily/axis-group-interface-scheme.cc
  M lily/balloon.cc
  M lily/balloon-engraver.cc
  M lily/bar-check-iterator.cc
  M lily/beam.cc
  M lily/beam-collision-engraver.cc
  M lily/beam-engraver.cc
  M lily/beam-quanting.cc
  M lily/bend-engraver.cc
  M lily/book.cc
  M lily/book-scheme.cc
  M lily/break-align-engraver.cc
  M lily/break-alignment-interface.cc
  M lily/break-substitution.cc
  M lily/breathing-sign.cc
  M lily/chord-name.cc
  M lily/chord-name-engraver.cc
  M lily/clef.cc
  M lily/clef-engraver.cc
  M lily/clef-modifier.cc
  M lily/cluster.cc
  M lily/cluster-engraver.cc
  M lily/coherent-ligature-engraver.cc
  M lily/completion-note-heads-engraver.cc
  M lily/completion-rest-engraver.cc
  M lily/constrained-breaking.cc
  M lily/context.cc
  M lily/context-def.cc
  M lily/context-mod-scheme.cc
  M lily/context-property.cc
  M lily/context-scheme.cc
  M lily/custos.cc
  M lily/custos-engraver.cc
  M lily/dispatcher.cc
  M lily/dispatcher-scheme.cc
  M lily/dot-column.cc
  M lily/dot-column-engraver.cc
  M lily/dots.cc
  M lily/dots-engraver.cc
  M lily/drum-note-performer.cc
  M lily/duration-scheme.cc
  M lily/dynamic-align-engraver.cc
  M lily/dynamic-engraver.cc
  M lily/enclosing-bracket.cc
  M lily/engraver.cc
  M lily/engraver-group.cc
  M lily/engraver-scheme.cc
  M lily/episema-engraver.cc
  M lily/event-chord-iterator.cc
  M lily/figured-bass-continuation.cc
  M lily/figured-bass-engraver.cc
  M lily/fingering-column.cc
  M lily/fingering-engraver.cc
  M lily/flag.cc
  M lily/font-interface.cc
  M lily/font-metric-scheme.cc
  M lily/font-select.cc
  M lily/footnote-engraver.cc
  M lily/forbid-break-engraver.cc
  M lily/function-documentation.cc
  M lily/global-context.cc
  M lily/global-context-scheme.cc
  M lily/grace-engraver.cc
  M lily/grace-music.cc
  M lily/grace-spacing-engraver.cc
  M lily/gregorian-ligature-engraver.cc
  M lily/grid-line-interface.cc
  M lily/grid-point-engraver.cc
  M lily/grob.cc
  M lily/grob-array.cc
  M lily/grob-array-scheme.cc
  M lily/grob-closure.cc
  M lily/grob-info.cc
  M lily/grob-pq-engraver.cc
  M lily/grob-property.cc
  M lily/grob-scheme.cc
  M lily/hairpin.cc
  M lily/hara-kiri-group-spanner.cc
  M lily/horizontal-bracket.cc
  M lily/include/engraver.hh
  M lily/include/global-context.hh
  M lily/include/item.hh
  M lily/include/lily-guile-macros.hh
  M lily/include/listener.hh
  M lily/include/music.hh
  M lily/include/paper-score.hh
  M lily/include/performance.hh
  M lily/include/performer.hh
  M lily/include/smobs.hh
  M lily/include/smobs.tcc
  M lily/include/spanner.hh
  M lily/include/stencil.hh
  M lily/include/stream-event.hh
  M lily/input-scheme.cc
  M lily/input-smob.cc
  M lily/instrument-name-engraver.cc
  M lily/item-scheme.cc
  M lily/keep-alive-together-engraver.cc
  M lily/key-signature-interface.cc
  M lily/kievan-ligature-engraver.cc
  M lily/laissez-vibrer-engraver.cc
  M lily/ledger-line-engraver.cc
  M lily/ledger-line-spanner.cc
  M lily/lexer.ll
  M lily/ligature-engraver.cc
  M lily/lily-guile.cc
  M lily/lily-lexer.cc
  M lily/lily-lexer-scheme.cc
  M lily/lily-parser.cc
  M lily/lily-parser-scheme.cc
  M lily/line-spanner.cc
  M lily/lyric-combine-music.cc
  M lily/lyric-combine-music-iterator.cc
  M lily/lyric-engraver.cc
  M lily/lyric-extender.cc
  M lily/lyric-hyphen.cc
  M lily/measure-grouping-engraver.cc
  M lily/measure-grouping-spanner.cc
  M lily/melody-spanner.cc
  M lily/mensural-ligature.cc
  M lily/mensural-ligature-engraver.cc
  M lily/metronome-engraver.cc
  M lily/midi-control-function-performer.cc
  M lily/moment.cc
  M lily/moment-scheme.cc
  M lily/multi-measure-rest.cc
  M lily/multi-measure-rest-engraver.cc
  M lily/music.cc
  M lily/music-function-scheme.cc
  M lily/music-iterator.cc
  M lily/music-scheme.cc
  M lily/music-sequence.cc
  M lily/music-wrapper.cc
  M lily/music-wrapper-iterator.cc
  M lily/new-fingering-engraver.cc
  M lily/note-collision.cc
  M lily/note-column.cc
  M lily/note-column-scheme.cc
  M lily/note-head.cc
  M lily/note-head-scheme.cc
  M lily/note-heads-engraver.cc
  M lily/note-name-engraver.cc
  M lily/note-performer.cc
  M lily/note-spacing.cc
  M lily/note-spacing-engraver.cc
  M lily/open-type-font.cc
  M lily/open-type-font-scheme.cc
  M lily/ottava-bracket.cc
  M lily/ottava-engraver.cc
  M lily/output-def.cc
  M lily/output-def-scheme.cc
  M lily/page-breaking.cc
  M lily/page-breaking-scheme.cc
  M lily/page-layout-problem.cc
  M lily/page-layout-problem-scheme.cc
  M lily/page-turn-engraver.cc
  M lily/paper-book.cc
  M lily/paper-book-scheme.cc
  M lily/paper-column.cc
  M lily/paper-column-engraver.cc
  M lily/paper-def.cc
  M lily/paper-outputter-scheme.cc
  M lily/paper-score-scheme.cc
  M lily/paper-system-scheme.cc
  M lily/parser.yy
  M lily/part-combine-iterator.cc
  M lily/partial-iterator.cc
  M lily/percent-repeat-engraver.cc
  M lily/percent-repeat-item.cc
  M lily/performance-scheme.cc
  M lily/performer-group.cc
  M lily/piano-pedal-align-engraver.cc
  M lily/piano-pedal-bracket.cc
  M lily/piano-pedal-engraver.cc
  M lily/pitch.cc
  M lily/pitch-scheme.cc
  M lily/pitched-trill-engraver.cc
  M lily/pointer-group-interface.cc
  M lily/pointer-group-interface-scheme.cc
  M lily/prob.cc
  M lily/prob-scheme.cc
  M lily/property-iterator.cc
  M lily/pure-from-neighbor-interface.cc
  M lily/quote-iterator.cc
  M lily/relative-octave-check.cc
  M lily/repeat-tie-engraver.cc
  M lily/repeated-music.cc
  M lily/rest.cc
  [[ 82 additional files ]]





reply via email to

[Prev in Thread] Current Thread [Next in Thread]