lilypond-devel
[Top][All Lists]
Advanced

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

Replace C++ (in)equality checks with proper SCM syntax (issue 226840043


From: v . villenave
Subject: Replace C++ (in)equality checks with proper SCM syntax (issue 226840043 by address@hidden)
Date: Tue, 07 Apr 2015 13:22:28 +0000

Reviewers: ,

Message:
Greetings everybody,
I realize that this is a rather large patch; at home I had divided it
into smaller, more manageable commits such as
0001-C-Scheme-consistency-use-ly_is_eol.patch
0002-C-Scheme-consistency-use-scm_is_false.patch
0003-C-Scheme-consistency-use-to_boolean.patch
0004-C-Scheme-consistency-use-SCM_UNPACK.patch
0005-C-Scheme-consistency-use-scm_is_eq.patch
0006-C-Scheme-consistency-use-ly_is_exact.patch
0007-C-Scheme-consistency-use-ly_is_undefined.patch

Not sure how to upload these to Rietveld without opening many different
issues, though.  Besides, even though the changes are numerous, they are
tiny and pretty straightforward for the most part.

Cheers,
Valentin.

Description:
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 I used:

x == SCM_BOOL_F            --->            scm_is_false (x)
x == SCM_BOOL_T            --->            to_boolean (x)
(I’d rather use something more straightforward such as
scm_is_true (x), but accordingly to the CG this is
The LilyPond Way®.)

x == (SCM y)               --->            scm_is_eq (x, y)
(often used with ly_symbol2scm)

I’m also adding some functions that Guile v1 does not provide:

x == SCM_EOL               --->            ly_is_eol (x)
x == SCM_UNDEFINED         --->            ly_is_undefined (x)
(scm_exact_p (x)) == SCM_BOOL_T   ---->    ly_is_exact (x)

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 (preferably with help from
more experienced people than yours truly).

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

Affected files (+472, -446 lines):
  M lily/accidental-engraver.cc
  M lily/accidental-placement.cc
  M lily/align-interface.cc
  M lily/ambitus-engraver.cc
  M lily/auto-beam-engraver.cc
  M lily/axis-group-interface.cc
  M lily/bar-engraver.cc
  M lily/bar-number-engraver.cc
  M lily/beam.cc
  M lily/beam-engraver.cc
  M lily/break-align-engraver.cc
  M lily/break-alignment-interface.cc
  M lily/break-substitution.cc
  M lily/chord-name-engraver.cc
  M lily/clef-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/cue-clef-engraver.cc
  M lily/directional-element-interface.cc
  M lily/dispatcher.cc
  M lily/dot-column.cc
  M lily/double-percent-repeat-engraver.cc
  M lily/drum-note-engraver.cc
  M lily/duration-scheme.cc
  M lily/dynamic-engraver.cc
  M lily/engraver.cc
  M lily/engraver-group.cc
  M lily/font-interface.cc
  M lily/general-scheme.cc
  M lily/glissando-engraver.cc
  M lily/grob.cc
  M lily/grob-interface.cc
  M lily/grob-property.cc
  M lily/grob-scheme.cc
  M lily/include/lily-guile.hh
  M lily/include/lily-guile-macros.hh
  M lily/key-engraver.cc
  M lily/lexer.ll
  M lily/ligature-engraver.cc
  M lily/lily-guile.cc
  M lily/lily-lexer.cc
  M lily/lily-parser.cc
  M lily/lily-parser-scheme.cc
  M lily/line-interface.cc
  M lily/line-spanner.cc
  M lily/mark-engraver.cc
  M lily/measure-grouping-spanner.cc
  M lily/mensural-ligature.cc
  M lily/metronome-engraver.cc
  M lily/midi-item.cc
  M lily/module-scheme.cc
  M lily/multi-measure-rest.cc
  M lily/multi-measure-rest-engraver.cc
  M lily/music.cc
  M lily/new-fingering-engraver.cc
  M lily/note-collision.cc
  M lily/open-type-font.cc
  M lily/output-def.cc
  M lily/output-def-scheme.cc
  M lily/page-breaking.cc
  M lily/page-layout-problem.cc
  M lily/page-spacing.cc
  M lily/page-turn-engraver.cc
  M lily/page-turn-page-breaking.cc
  M lily/pango-font.cc
  M lily/pango-select.cc
  M lily/paper-book.cc
  M lily/paper-column.cc
  M lily/paper-column-engraver.cc
  M lily/paper-outputter.cc
  M lily/paper-score.cc
  M lily/paper-system.cc
  M lily/parse-scm.cc
  M lily/parser.yy
  M lily/part-combine-engraver.cc
  M lily/part-combine-iterator.cc
  M lily/percent-repeat-engraver.cc
  M lily/piano-pedal-engraver.cc
  M lily/pitched-trill-engraver.cc
  M lily/prob.cc
  M lily/prob-scheme.cc
  M lily/profile.cc
  M lily/program-option-scheme.cc
  M lily/quote-iterator.cc
  M lily/repeat-acknowledge-engraver.cc
  M lily/score.cc
  M lily/score-performer.cc
  M lily/score-scheme.cc
  M lily/script-engraver.cc
  M lily/script-interface.cc
  M lily/self-alignment-interface.cc
  M lily/simple-closure.cc
  M lily/simple-spacer.cc
  M lily/simple-spacer-scheme.cc
  M lily/skyline.cc
  M lily/slur.cc
  M lily/slur-configuration.cc
  M lily/slur-scoring.cc
  M lily/smobs.cc
  M lily/spacing-determine-loose-columns.cc
  M lily/staff-performer.cc
  M lily/staff-spacing.cc
  M lily/stem.cc
  M lily/stem-tremolo.cc
  M lily/stencil.cc
  M lily/stencil-expression.cc
  M lily/stencil-integral.cc
  M lily/stencil-interpret.cc
  M lily/stencil-scheme.cc
  M lily/stream-event.cc
  M lily/stream-event-scheme.cc
  M lily/system.cc
  M lily/system-start-delimiter.cc
  M lily/system-start-delimiter-engraver.cc
  M lily/tab-note-heads-engraver.cc
  M lily/tie-formatting-problem.cc
  M lily/tie-specification.cc
  M lily/time-signature-engraver.cc
  M lily/translator-ctors.cc
  M lily/translator-group-ctors.cc
  M lily/ttf.cc
  M lily/tuplet-bracket.cc
  M lily/vaticana-ligature.cc
  M lily/vaticana-ligature-engraver.cc
  M lily/volta-engraver.cc
  M lily/volta-repeat-iterator.cc



reply via email to

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