+protected:
+ void stop_translation_timestep ();
+ void listen_alternative (Stream_event *);
+ void acknowledge_break_alignment (Grob_info);
+ void process_music ();
+ void create_items ();
+ TRANSLATOR_DECLARATIONS (Bar_number_engraver);
+};
+
+void
+Bar_number_engraver::listen_alternative (Stream_event *ev)
+{
+ if (alternative_event_)
+ return;
+
+ alternative_event_ = ev;
+ int current_barnumber = robust_scm2int (get_property ("currentBarNumber"), 0);
+ Direction alternative_dir = robust_scm2dir (ev->get_property ("alternative-dir"), CENTER);
+ bool make_alternative = scm_is_eq (get_property ("alternativeNumberingStyle"),
+ ly_symbol2scm ("numbers"))
+ || scm_is_eq (get_property ("alternativeNumberingStyle"),
+ ly_symbol2scm ("numbers-with-letters"));
+ if (make_alternative)
+ {
+ /*
+ if we're starting the first alternative, we set the starting
+ bar number to the current bar number
+ */
+ if (alternative_dir == LEFT)
+ alternative_starting_bar_number_ = current_barnumber;