]> git.donarmstrong.com Git - lilypond.git/commit
Replace C++ (in)equality checks with proper SCM syntax
authorValentin Villenave <valentin@villenave.net>
Tue, 21 Apr 2015 15:57:03 +0000 (17:57 +0200)
committerValentin Villenave <valentin@villenave.net>
Tue, 21 Apr 2015 15:57:03 +0000 (17:57 +0200)
commite0af94bb8939bc6f4998db6294010baa77139092
treea70e48317413af4ce8026b444ceab8ff9c579657
parent237343567335e54017c40545dc2e20fb3eca50fa
Replace C++ (in)equality checks with proper SCM syntax

This commit replaces the most straightforward situations
where two SCM objects are compared.  Here are the basic
replacements used:

x == y                  ------->            scm_is_eq (x,y)
x == SCM_BOOL_T         ------->            to_boolean (x)
x == SCM_BOOL_F         ------->            scm_is_false (x)
x != SCM_BOOL_T         ------->            scm_is_true (x)
x == SCM_UNDEFINED      ------->            SCM_UNBNDP (x)
x == SCM_EOL            ------->            scm_is_null (x)
(scm_exact_p (x) == SCM_BOOL_T)  ------->   ly_is_rational (x)
(scm_integer_p (x) == SCM_BOOL_T) ------->  scm_is_integer (x)
(scm_list_p (x) == SCM_BOOL_T)  ------->    ly_is_list (x)
(scm_port_p (x) == SCM_BOOL_T)  ------->    ly_is_port (x)
(scm_equal_p (x, y) == SCM_BOOL_T) -------> ly_is_equal (x,y)

Finally, I replaced (!cached) with (!SCM_UNPACK (cached)) in
lily-guile-macros.hh, as has been suggested once by David.

Please note that this commit does not handle some situations
I’m less comfortable with (namely those involving scm_c_memq,
scm_assq or scm_hashq_get_handle), and some scm_*_p checks
for which there isn’t a ly_is_* replacement yet (to wit,
scm_hash_table_p, scm_promise_p, and scm_variable_bound_p).
Those should be dealt with later (another patch is in the works).
140 files changed:
lily/accidental-engraver.cc
lily/accidental-placement.cc
lily/align-interface.cc
lily/ambitus-engraver.cc
lily/auto-beam-engraver.cc
lily/axis-group-interface.cc
lily/bar-engraver.cc
lily/bar-number-engraver.cc
lily/beam-engraver.cc
lily/beam.cc
lily/break-align-engraver.cc
lily/break-alignment-interface.cc
lily/break-substitution.cc
lily/chord-name-engraver.cc
lily/clef-engraver.cc
lily/constrained-breaking.cc
lily/context-def.cc
lily/context-mod-scheme.cc
lily/context-property.cc
lily/context-scheme.cc
lily/context.cc
lily/cue-clef-engraver.cc
lily/directional-element-interface.cc
lily/dispatcher.cc
lily/dot-column.cc
lily/double-percent-repeat-engraver.cc
lily/drum-note-engraver.cc
lily/drum-note-performer.cc
lily/duration-scheme.cc
lily/dynamic-engraver.cc
lily/engraver-group.cc
lily/engraver.cc
lily/figured-bass-engraver.cc
lily/font-interface.cc
lily/font-select.cc
lily/general-scheme.cc
lily/glissando-engraver.cc
lily/grob-interface.cc
lily/grob-property.cc
lily/grob-scheme.cc
lily/grob.cc
lily/include/lily-guile-macros.hh
lily/include/lily-guile.hh
lily/instrument-name-engraver.cc
lily/key-engraver.cc
lily/lexer.ll
lily/ligature-engraver.cc
lily/lily-guile.cc
lily/lily-lexer.cc
lily/lily-parser-scheme.cc
lily/lily-parser.cc
lily/line-interface.cc
lily/line-spanner.cc
lily/ly-module.cc
lily/mark-engraver.cc
lily/measure-grouping-spanner.cc
lily/mensural-ligature.cc
lily/metronome-engraver.cc
lily/midi-item.cc
lily/module-scheme.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music.cc
lily/new-fingering-engraver.cc
lily/note-collision.cc
lily/open-type-font.cc
lily/output-def-scheme.cc
lily/output-def.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/page-spacing.cc
lily/page-turn-engraver.cc
lily/page-turn-page-breaking.cc
lily/pango-font.cc
lily/pango-select.cc
lily/paper-book.cc
lily/paper-column-engraver.cc
lily/paper-column.cc
lily/paper-def.cc
lily/paper-outputter.cc
lily/paper-score.cc
lily/paper-system.cc
lily/parse-scm.cc
lily/parser.yy
lily/part-combine-engraver.cc
lily/part-combine-iterator.cc
lily/percent-repeat-engraver.cc
lily/piano-pedal-engraver.cc
lily/pitched-trill-engraver.cc
lily/prob-scheme.cc
lily/prob.cc
lily/profile.cc
lily/program-option-scheme.cc
lily/quote-iterator.cc
lily/repeat-acknowledge-engraver.cc
lily/score-performer.cc
lily/score-scheme.cc
lily/score.cc
lily/script-engraver.cc
lily/script-interface.cc
lily/self-alignment-interface.cc
lily/simple-closure.cc
lily/simple-spacer-scheme.cc
lily/simple-spacer.cc
lily/skyline.cc
lily/slur-configuration.cc
lily/slur-scoring.cc
lily/slur.cc
lily/smobs.cc
lily/spaceable-grob.cc
lily/spacing-determine-loose-columns.cc
lily/spanner.cc
lily/staff-performer.cc
lily/staff-spacing.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/stencil-expression.cc
lily/stencil-integral.cc
lily/stencil-interpret.cc
lily/stencil-scheme.cc
lily/stencil.cc
lily/stream-event-scheme.cc
lily/stream-event.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-delimiter.cc
lily/system.cc
lily/tab-note-heads-engraver.cc
lily/text-interface.cc
lily/tie-formatting-problem.cc
lily/tie-specification.cc
lily/time-signature-engraver.cc
lily/translator-ctors.cc
lily/translator-group-ctors.cc
lily/ttf.cc
lily/tuplet-bracket.cc
lily/tuplet-number.cc
lily/vaticana-ligature-engraver.cc
lily/vaticana-ligature.cc
lily/volta-engraver.cc
lily/volta-repeat-iterator.cc