-};
-
-Accidental_result
-check_pitch_against_signature (SCM key_signature, Pitch const &pitch,
- int bar_number, SCM laziness, bool ignore_octave)
-{
- Accidental_result result;
- int n = pitch.get_notename ();
- int o = pitch.get_octave ();
-
- SCM previous_alteration = SCM_BOOL_F;
-
- SCM from_same_octave = ly_assoc_get (scm_cons (scm_from_int (o),
- scm_from_int (n)), key_signature, SCM_BOOL_F);
- SCM from_key_signature = ly_assoc_get (scm_from_int (n), key_signature, SCM_BOOL_F);
- SCM from_other_octaves = SCM_BOOL_F;
- for (SCM s = key_signature; scm_is_pair (s); s = scm_cdr (s))
- {
- SCM entry = scm_car (s);
- if (scm_is_pair (scm_car (entry))
- && scm_cdar (entry) == scm_from_int (n))
- {
- from_other_octaves = scm_cdr (entry);
- break;
- }
- }
-
- if (!ignore_octave
- && from_same_octave != SCM_BOOL_F
- && recent_enough (bar_number, from_same_octave, laziness))
- previous_alteration = from_same_octave;
- else if (ignore_octave
- && from_other_octaves != SCM_BOOL_F
- && recent_enough (bar_number, from_other_octaves, laziness))
- previous_alteration = from_other_octaves;
- else if (from_key_signature != SCM_BOOL_F)
- previous_alteration = from_key_signature;
-
- if (is_tied (previous_alteration))
- {
- result.need_acc = true;
- }
- else
- {
- Rational prev = extract_alteration (previous_alteration);
- Rational alter = pitch.get_alteration ();