#include "score-column.hh"
#include "command-request.hh"
#include "paper-def.hh"
-#include "main.hh"
+
Score_engraver::Score_engraver()
*/
if (announce_info_arr_[i].req_l_)
{
- Musical_req *m = announce_info_arr_[i].req_l_->access_Musical_req ();
- if (m && m->access_Rhythmic_req ())
+ Musical_req *m =dynamic_cast <Musical_req *> ( announce_info_arr_[i].req_l_);
+ if (m && dynamic_cast <Rhythmic_req *> (m))
{
musical_column_l_->add_duration (m->duration());
}
void
Score_engraver::typeset_element (Score_element *elem_p)
{
- elem_p_arr_.push(elem_p);
+ elem_p_arr_.push (elem_p);
}
+
void
Score_engraver::typeset_all()
{
for (int i =0; i < elem_p_arr_.size(); i++)
{
Score_element * elem_p = elem_p_arr_[i];
- if (elem_p->access_Spanner ())
+ if (dynamic_cast <Spanner *> (elem_p))
{
- Spanner *s = elem_p->access_Spanner ();
+ Spanner *s = dynamic_cast <Spanner *> (elem_p);
pscore_p_->typeset_unbroken_spanner (s);
-
-
- /*
+ /*
do something sensible if spanner not
spanned on 2 items.
*/
}
else
{
- Item *item_p = elem_p->access_Item ();
+ Item *item_p = dynamic_cast <Item *> (elem_p);
pscore_p_->typeset_element (item_p);
if (!item_p->axis_group_l_a_[X_AXIS]) {
if (item_p->breakable_b_)
}
-
Music_output*
Score_engraver::get_output_p ()
{
{
bool gotcha = Engraver_group_engraver::do_try_request (r);
- if (gotcha || !r->access_Command_req ())
+ if (gotcha || !dynamic_cast <Command_req *> (r))
return gotcha;
- Command_req * c = r->access_Command_req ();
- if (c->access_Break_req ())
+ Command_req * c = dynamic_cast <Command_req *> (r);
+ if (dynamic_cast <Break_req *> (c))
{
- Break_req* b = (Break_req*)c->access_Break_req ();
+ Break_req* b = (Break_req*)dynamic_cast <Break_req *> (c);
if (b->penalty_i_ <= Break_req::DISALLOW)
break_penalty_i_ = b->penalty_i_;
else if (b->penalty_i_ >= Break_req::FORCE)
Score_engraver::do_add_processing ()
{
Translator_group::do_add_processing ();
- //assert (output_def_l_->is_type_b (Paper_def::static_name ()));
- // urg
- pscore_p_ = output_def_l_->paper_score_p ();
- // assert (pscore_p_);
- // urg, via parser a Paper_def gets constructed
- // this should never happen, but can't be prevented (Paper_def can't be
- // abstract bo virtual_copy_cons etc.
- if (!pscore_p_)
- {
- printf ("\nBRAAK\n");
- output_def_l_ = global_paper_l->paper_l ()->clone ();
- // pscore_p_ = output_def_l_->paper_score_p ();
- pscore_p_ = global_paper_l->paper_score_p ();
- pscore_p_->paper_l_ = global_paper_l->paper_l ();
- }
- else
- pscore_p_->paper_l_ = output_def_l_->paper_l ();
- assert (pscore_p_->paper_l_);
+ assert (output_def_l_->is_type_b (Paper_def::static_name ()));
assert (!daddy_trans_l_);
+ pscore_p_ = new Paper_score;
+ pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
}