/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2001--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2001--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "grob.hh"
#include "warn.hh"
+#include "translator.icc"
+
struct Grob_pq_entry
{
Grob *grob_;
TRANSLATOR_DECLARATIONS (Grob_pq_engraver);
protected:
virtual void initialize ();
- DECLARE_ACKNOWLEDGER (grob);
+ void acknowledge_grob (Grob_info);
void start_translation_timestep ();
void stop_translation_timestep ();
void process_acknowledged ();
vector<Grob_pq_entry> started_now_;
};
-Grob_pq_engraver::Grob_pq_engraver ()
+Grob_pq_engraver::Grob_pq_engraver (Context *c)
+ : Engraver (c)
{
}
"Compare two grob priority queue entries."
" This is an internal function.")
{
- if (Moment::compare (*Moment::unsmob (scm_car (a)),
- *Moment::unsmob (scm_car (b))) < 0)
+ if (Moment::compare (*unsmob<Moment> (scm_car (a)),
+ *unsmob<Moment> (scm_car (b))) < 0)
return SCM_BOOL_T;
else
return SCM_BOOL_F;
Moment now = now_mom ();
SCM start_busy = get_property ("busyGrobs");
SCM busy = start_busy;
- while (scm_is_pair (busy) && *Moment::unsmob (scm_caar (busy)) == now)
+ while (scm_is_pair (busy) && *unsmob<Moment> (scm_caar (busy)) == now)
busy = scm_cdr (busy);
}
SCM start_busy = get_property ("busyGrobs");
SCM busy = start_busy;
- while (scm_is_pair (busy) && *Moment::unsmob (scm_caar (busy)) < now)
+ while (scm_is_pair (busy) && *unsmob<Moment> (scm_caar (busy)) < now)
{
/*
The grob-pq-engraver is not water tight, and stuff like
busy = scm_cdr (busy);
}
- if (start_busy != busy)
+ if (!scm_is_eq (start_busy, busy))
context ()->set_property ("busyGrobs", busy);
}
-#include "translator.icc"
-ADD_ACKNOWLEDGER (Grob_pq_engraver, grob);
+void
+Grob_pq_engraver::boot ()
+{
+ ADD_ACKNOWLEDGER (Grob_pq_engraver, grob);
+}
+
ADD_TRANSLATOR (Grob_pq_engraver,
/* doc */
"Administrate when certain grobs (e.g., note heads) stop"