Reviewers: , Description: The compiler is capable of counting the number of arguments in a callback. It can also check that the number of optional arguments does not exceed the total number of arguments.
I've put the code that accomplishes these things in lily-guile-macros.hh, but it is generic enough that it might make more sense to create a new file for it. Suggestions are welcome. Changes in lily-guile-macros.hh are manual. Everything else is automated with this script: for FILE in $(git grep -l '^MAKE_[_A-Z]*SCHEME_CALLBACK[_A-Z]* ' lily) do sed -i 's/\(MAKE_[_A-Z]*SCHEME_CALLBACK[_A-Z]*\) *(\([^,]*\), *\([^,]*\), *\([^,)]*\)/\1 (\2, \3/' $FILE done Please review this at https://codereview.appspot.com/262980043/ Affected files (+312, -278 lines): M lily/accidental.cc M lily/accidental-placement.cc M lily/align-interface.cc M lily/arpeggio.cc M lily/axis-group-interface.cc M lily/balloon.cc M lily/beam.cc M lily/break-alignment-interface.cc M lily/breathing-sign.cc M lily/chord-name.cc M lily/clef.cc M lily/clef-modifier.cc M lily/cluster.cc M lily/custos.cc M lily/dot-column.cc M lily/dots.cc M lily/duration-scheme.cc M lily/enclosing-bracket.cc M lily/figured-bass-continuation.cc M lily/fingering-column.cc M lily/flag.cc M lily/grace-music.cc M lily/grid-line-interface.cc M lily/grob.cc M lily/hairpin.cc M lily/hara-kiri-group-spanner.cc M lily/horizontal-bracket.cc M lily/include/lily-guile-macros.hh M lily/key-signature-interface.cc M lily/kievan-ligature.cc M lily/ledger-line-spanner.cc M lily/line-spanner.cc M lily/lyric-combine-music.cc M lily/lyric-extender.cc M lily/lyric-hyphen.cc M lily/measure-grouping-spanner.cc M lily/melody-spanner.cc M lily/mensural-ligature.cc M lily/multi-measure-rest.cc M lily/music.cc M lily/music-sequence.cc M lily/music-wrapper.cc M lily/note-collision.cc M lily/note-head.cc M lily/ottava-bracket.cc M lily/paper-column.cc M lily/partial-iterator.cc M lily/percent-repeat-item.cc M lily/piano-pedal-bracket.cc M lily/pitch.cc M lily/property-iterator.cc M lily/pure-from-neighbor-interface.cc M lily/relative-octave-check.cc M lily/relative-octave-music.cc M lily/repeated-music.cc M lily/rest.cc M lily/rest-collision.cc M lily/script-column.cc M lily/script-interface.cc M lily/self-alignment-interface.cc M lily/semi-tie.cc M lily/semi-tie-column.cc M lily/separation-item.cc M lily/side-position-interface.cc M lily/skyline.cc M lily/skyline-pair.cc M lily/slur.cc M lily/slur-scoring.cc M lily/spacing-spanner.cc M lily/spanner.cc M lily/staff-symbol.cc M lily/staff-symbol-referencer.cc M lily/stem.cc M lily/stem-tremolo.cc M lily/stencil-integral.cc M lily/stream-event.cc M lily/sustain-pedal.cc M lily/system.cc M lily/system-start-delimiter.cc M lily/text-interface.cc M lily/tie.cc M lily/tie-column.cc M lily/tuplet-bracket.cc M lily/tuplet-number.cc M lily/vaticana-ligature.cc M lily/volta-bracket.cc _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel