[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 ]]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Issue 4365: non-member is_smob<>(), is_derived_smob<>(), etc. (issue 231680043 by address@hidden),
nine . fierce . ballads <=