+// TODO: consider moving check_pitch_against_signature to SCM (in which case
+// we can delete this function).
+LY_DEFINE (ly_find_accidentals_simple, "ly:find-accidentals-simple", 5, 0, 0,
+ (SCM keysig, SCM pitch_scm, SCM barnum, SCM laziness, SCM octaveness ),
+ "Checks the need for an accidental and a @q{restore} accidental against a"
+ " key signature. The @var{laziness} is the number of bars for which reminder"
+ " accidentals are used (ie. if @var{laziness} is zero, we only cancel accidentals"
+ " in the same bar; if @var{laziness} is three, we cancel accidentals up to three"
+ " bars after they first appear. @var{octaveness} is either"
+ " @code{'same-octave} or @code{'any-octave} and it specifies whether"
+ " accidentals should be canceled in different octaves.")
+{
+ LY_ASSERT_TYPE (unsmob_pitch, pitch_scm, 2);
+ LY_ASSERT_TYPE (scm_is_integer, barnum, 3);
+ LY_ASSERT_TYPE (ly_is_symbol, octaveness, 5);
+
+ bool symbol_ok = octaveness == ly_symbol2scm ("any-octave") ||
+ octaveness == ly_symbol2scm ("same-octave");
+
+ SCM_ASSERT_TYPE (symbol_ok, octaveness, SCM_ARG5, __FUNCTION__, "'any-octave or 'same-octave");
+
+ Pitch *pitch = unsmob_pitch (pitch_scm);
+
+ int bar_number = scm_to_int (barnum);
+ bool ignore_octave = ly_symbol2scm ("any-octave") == octaveness;
+ Accidental_result result = check_pitch_against_signature (keysig, *pitch, bar_number,
+ laziness, ignore_octave);
+
+ return scm_cons (scm_from_bool (result.need_restore), scm_from_bool (result.need_acc));
+}
+