if (breaking.size() >1)
{
- line_l = (Line_of_score*)clone()->access_Spanner ();
+ line_l = dynamic_cast <Line_of_score*> (clone());
}
else
line_l = (Line_of_score*) this;
String
Midi_key::str () const
{
- Key_change_req* k = audio_item_l_->req_l_->access_Command_req ()->access_Key_change_req ();
+ Key_change_req* k = dynamic_cast <Key_change_req *> (audio_item_l_->req_l_);
int sharps_i = k->sharps_i ();
int flats_i = k->flats_i ();
String
Midi_time_signature::str () const
{
- Time_signature_change_req* m = audio_item_l_->req_l_->access_Command_req ()->access_Time_signature_change_req ();
+ Time_signature_change_req* m = dynamic_cast <Time_signature_change_req *> (audio_item_l_->req_l_);
int num_i = m->beats_i_;
int den_i = m->one_beat_i_;
Moment
Midi_note::duration () const
{
- Moment m = audio_item_l_->req_l_->access_Musical_req ()->access_Rhythmic_req ()->duration ();
+ Moment m = dynamic_cast <Rhythmic_req *> (audio_item_l_->req_l_)->duration ();
if (m < Moment (1, 1000))
{
warning (_ ("silly duration"));
int
Midi_note::pitch_i () const
{
- int p = audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req
- ()->pitch_.semitone_pitch ()
+ int p = dynamic_cast <Melodic_req*> (audio_item_l_->req_l_)->pitch_.semitone_pitch ()
+ ((Audio_note*)audio_item_l_)->transposing_i_;
if (p == INT_MAX)
{
int
Midi_note_off::pitch_i () const
{
- return audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req
- ()->pitch_.semitone_pitch ()
+ return dynamic_cast <Melodic_req *> (audio_item_l_->req_l_)->pitch_.semitone_pitch ()
+ ((Audio_note*)audio_item_l_)->transposing_i_;
}
bool
Multi_measure_rest_engraver::do_try_request (Request* req_l)
{
- if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Multi_measure_rest_req ())
+ if (!dynamic_cast<Multi_measure_rest_req *> (req_l))
return false;
if (multi_measure_req_l_)
|| req_start_mom_ != now_moment ())
return false;
- multi_measure_req_l_ = req_l->access_Musical_req ()->access_Multi_measure_rest_req ();
+ multi_measure_req_l_ = dynamic_cast<Multi_measure_rest_req *> (req_l);
req_start_mom_ = now_moment ();
rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
{
for (iter (music_p_list_p_->top(),i); i.ok (); i++)
{
- Musical_req *m =((Request*)i.ptr ())->access_Musical_req ();
- if (m && m->access_Melodic_req ())
- {
- Musical_pitch &pit = m->access_Melodic_req ()->pitch_;
+ Musical_req *m = dynamic_cast<Musical_req*> (i.ptr ());
+ if (m && dynamic_cast <Melodic_req *> (m))
+ {
+ Musical_pitch &pit = dynamic_cast <Melodic_req *> (m)->pitch_;
pit.to_relative_octave (last);
return pit;
}
Music_output_def::find_translator_l (String name) const
{
if (translator_p_dict_p_->elem_b (name))
- return (*translator_p_dict_p_)[name]->access_Translator ();
+ return (*translator_p_dict_p_)[name]->access_Translator ();
if (global_translator_dict_p->elem_b (name))
return (*global_translator_dict_p)[name];
if (!t)
error (_("Can't find Score context"));
t = t->clone ();
- Global_translator *g = t->access_Translator_group ()->global_l ();
+ Global_translator *g = dynamic_cast <Translator_group *> (t)->global_l ();
t->add_processing ();
return g;
return "";
Identifier * id = (*scope_p_) ["output"];
- String *p = id->access_String ();
+ String *p = dynamic_cast <String *> (id);
return p ? *p : String ("");
}
bool
Melodic_req::do_equal_b (Request*r) const
{
- Melodic_req* m= r->access_Musical_req ()->access_Melodic_req ();
+ Melodic_req* m= dynamic_cast <Melodic_req *> (r);
return !compare (*m, *this);
}
bool
Rhythmic_req::do_equal_b (Request*r) const
{
- Rhythmic_req* rh = r->access_Musical_req ()->access_Rhythmic_req ();
+ Rhythmic_req* rh = dynamic_cast <Rhythmic_req *> (r);
return !compare (*this, *rh);
}
bool
Span_req:: do_equal_b (Request*r) const
{
- Span_req * s = r->access_Span_req ();
+ Span_req * s = dynamic_cast <Span_req *> (r);
return spantype == s->spantype;
}
bool
Script_req::do_equal_b (Request*r) const
{
- Script_req * s = r->access_Script_req ();
+ Script_req * s = dynamic_cast <Script_req *> (r);
return scriptdef_p_->equal_b (*s->scriptdef_p_);
}
bool
Absolute_dynamic_req::do_equal_b (Request *r) const
{
- Absolute_dynamic_req *a = r->access_Musical_req ()->access_Dynamic_req ()->access_Absolute_dynamic_req ();
+ Absolute_dynamic_req *a = dynamic_cast <Absolute_dynamic_req *> (r);
return loudness_ == a->loudness_;
}
bool
Span_dynamic_req::do_equal_b (Request *req) const
{
- Span_dynamic_req * s = req->access_Musical_req ()->access_Span_dynamic_req ();
+ Span_dynamic_req * s = dynamic_cast <Span_dynamic_req *> (req);
return Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
}
switch (t)
{
case BEAMPLET:
- reqs.top ()->access_Span_req ()->spantype = Span_req::START;
+ dynamic_cast<Span_req*> (reqs.top ())->spantype = Span_req::START;
/* fall through */
case '<':
case '>':
case '(':
case '[':
case PLET:
- reqs[0]->access_Span_req ()->spantype = Span_req::START;
+ dynamic_cast<Span_req*> (reqs.top ())->spantype = Span_req::START;
break;
case MAEBTELP:
- reqs.top ()->access_Span_req ()->spantype = Span_req::STOP;
+ dynamic_cast<Span_req*> (reqs.top ())->spantype = Span_req::STOP;
/* fall through */
case '!':
case ')':
case ']':
- reqs[0]->access_Span_req ()->spantype = Span_req::STOP;
+ dynamic_cast<Span_req*> (reqs[0])->spantype = Span_req::STOP;
break;
default:
}
for (int i = 0; i < reqs.size (); i++)
- if (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ())
+ if (dynamic_cast<Span_dynamic_req*> (reqs[i]))
{
- Span_dynamic_req* s_l= reqs[i]->access_Musical_req ()->access_Span_dynamic_req ();
+ Span_dynamic_req* s_l= dynamic_cast<Span_dynamic_req*> (reqs[i]);
s_l->dynamic_dir_ = (t == '<') ? UP:DOWN;
}
Note_performer::do_process_requests ()
{
// this is _really_ braindead, but it generates some output
- if (!note_req_l_ || !note_req_l_->access_Melodic_req () || !note_req_l_->access_Rhythmic_req ())
+ if (!note_req_l_ || !dynamic_cast <Melodic_req *> (note_req_l_) || !dynamic_cast <Rhythmic_req *> (note_req_l_))
return;
int transposing_i = 0;
if (note_req_l_)
return false;
- if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Note_req ())
- return false;
-
- note_req_l_ = req_l->access_Musical_req ()->access_Melodic_req ();
-
- return true;
+ if (Note_req *nr = dynamic_cast <Note_req *> (req_l))
+ {
+ note_req_l_ = nr;
+ return true;
+ }
+ return false;
}
#include "word-wrap.hh"
#include "gourlay-breaking.hh"
#include "paper-stream.hh"
-#include "ps-stream.hh"
-#include "tex-stream.hh"
#include "paper-outputter.hh"
-#include "ps-outputter.hh"
-#include "tex-outputter.hh"
#include "file-results.hh"
#include "misc.hh"
}
for (iter (elem_p_list_.top (),i); i.ok () ;)
{
- Item *i_l =i->access_Item ();
+ Item *i_l =dynamic_cast <Item *> (i);
if (i_l && !i_l->line_l ())
{
i_l->unlink ();
Array<Column_x_positions> breaking = calc_breaking ();
- Paper_stream* paper_stream_p = global_lookup_l->paper_stream_p ();
- outputter_l_ = global_lookup_l->paper_outputter_p (paper_stream_p, paper_l_, header_l_, origin_str_);
+ Paper_stream* paper_stream_p = paper_l_->paper_stream_p ();
+ outputter_l_ = paper_l_->paper_outputter_p (paper_stream_p, header_l_, origin_str_);
Link_array<Line_of_score> lines;
for (int i=0; i < breaking.size (); i++)
Item const*r=r_item_l;
while (! l->is_type_b(Paper_column::static_name ()))
- l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
+ l = dynamic_cast<Item*> (l->axis_group_l_a_[X_AXIS]);
while (! r->is_type_b(Paper_column::static_name ()))
- r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
+ r = dynamic_cast<Item*>(r->axis_group_l_a_[X_AXIS]);
PCursor<Paper_column*> start (l ? find_col ((Paper_column*)l)+1 : col_p_list_.top ());
PCursor<Paper_column*> stop (r ? find_col ((Paper_column*)r) : col_p_list_.bottom ());
bool
Plet_swallow_engraver::do_try_request (Request* req_l)
{
- if (req_l && req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Plet_req ())
- return true;
- return false;
+ return dynamic_cast <Plet_req *> (req_l);
}
#include <string.h>
-#include "tex-outputter.hh"
#include "p-score.hh"
#include "paper-def.hh"
#include "lookup.hh"
#include "p-col.hh"
#include "molecule.hh"
#include "misc.hh"
+#include "paper-outputter.hh"
#define PARANOID
Score_element * elt = dependency (i);
if (elt->line_l() != line)
{
- if (elt->access_Spanner ())
+ if (dynamic_cast <Spanner *> (elt))
{
- Spanner * sp = elt->access_Spanner ();
+ Spanner * sp = dynamic_cast <Spanner *> (elt);
Spanner * broken = sp->find_broken_piece (line);
substitute_dependency (sp, broken);
add_dependency (broken);
}
- else if (elt->access_Item ())
+ else if (dynamic_cast <Item *> (elt))
{
- Item * my_item = elt->access_Item ()->find_prebroken_piece (line);
+ Item * my_item = dynamic_cast <Item *> (elt)->find_prebroken_piece (line);
substitute_dependency (elt, my_item);
if (my_item)
for (int i=0; i < dependency_size(); i++)
{
Score_element * elt = dependency (i);
- Item *it_l = elt->access_Item ();
+ Item *it_l = dynamic_cast <Item *> (elt);
if (it_l && it_l->breakable_b_)
- if (access_Item ())
+ if (Item *me = dynamic_cast<Item*> (this) )
{
- Score_element *new_l = it_l->find_prebroken_piece (access_Item ()->break_status_dir_);
+ Score_element *new_l = it_l->find_prebroken_piece (me->break_status_dir_);
if (new_l != elt)
{
new_arr.push (new_l);
void
Score_priority_engraver::acknowledge_element (Score_element_info inf)
{
- Item * item_l = inf.elem_l_->access_Item ();
+ Item * item_l = dynamic_cast <Item *> (inf.elem_l_);
if (item_l && item_l->breakable_b_ && !item_l->empty_b ())
{
/*
*/
if (unbound_elem->axis_group_l_a_[X_AXIS] == hg)
return;
- unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS]->access_Score_element ();
+ unbound_elem = dynamic_cast<Score_element*> (unbound_elem->axis_group_l_a_[X_AXIS]);
}
hg->add_element (unbound_elem);
bool
Script_engraver::do_try_request (Request *r_l)
{
- if (!r_l->access_Musical_req () || ! r_l->access_Musical_req ()->access_Musical_script_req ())
+ if (!dynamic_cast <Musical_script_req *> (r_l))
return false ;
for (int i=0; i < script_req_l_arr_.size(); i++)
if (r_l->equal_b (script_req_l_arr_[i]))
return true;
}
- script_req_l_arr_.push (r_l->access_Script_req ());
+ script_req_l_arr_.push (dynamic_cast <Script_req *> (r_l));
return true;
}
#include "spanner.hh"
#include "p-col.hh"
#include "p-score.hh"
-#include "tex-outputter.hh"
#include "molecule.hh"
+#include "paper-outputter.hh"
IMPLEMENT_IS_TYPE_B1(Spanner,Score_element);
for (int i=1; i < break_cols.size(); i++)
{
- Spanner* span_p = clone()->access_Spanner ();
+ Spanner* span_p = dynamic_cast<Spanner*> (clone());
Item *left = break_cols[i-1];
Item *right = break_cols[i];
if (!right->line_l())
{
if (i.elem_l_->is_type_b (Rhythmic_head::static_name()))
{
- Rhythmic_head *h = (Rhythmic_head*) i.elem_l_->access_Item ();
+ Rhythmic_head *h = (Rhythmic_head*) dynamic_cast <Item *> (i.elem_l_);
if (!stem_p_)
{
- Rhythmic_req * r = i.req_l_->access_Musical_req ()->access_Rhythmic_req ();
+ Rhythmic_req * r = dynamic_cast <Rhythmic_req *> (i.req_l_);
stem_p_ = new Stem;
int durlog_i = r->duration_.durlog_i_;
stem_p_->flag_i_ = durlog_i;
bool
Stem_engraver::do_try_request (Request* r)
{
- Musical_req* mus_l = r->access_Musical_req ();
+ Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
if (!mus_l)
return false;
- Abbreviation_req* a = mus_l->access_Abbreviation_req ();
+ Abbreviation_req* a = dynamic_cast <Abbreviation_req *> (mus_l);
if (!a)
return false;
bool
Ties_engraver::do_try_request (Request*req)
{
- if (! req->access_Musical_req ())
+ if (! dynamic_cast <Musical_req *> (req))
return false;
- Tie_req * r= req->access_Musical_req ()->access_Tie_req ();
- if (!r)
- return false;
-
- req_l_ = r;
- return true;
+ if(Tie_req * r= dynamic_cast <Tie_req *> (req))
+ {
+ req_l_ = r;
+ return true;
+ }
+ return false;
}
return;
if (i.elem_l_->is_type_b (Note_head::static_name ()))
{
- Note_head * h = (Note_head*)i.elem_l_->access_Item ();
- Melodic_req *m = i.req_l_->access_Musical_req ()->access_Melodic_req ();
+ Note_head * h = dynamic_cast <Note_head *> (i.elem_l_);
+ Melodic_req *m = dynamic_cast <Melodic_req *> (i.req_l_);
head_mel_tuple_arr_.push (Head_melodic_tuple (h, m));
}
if (time_signature_req_l_)
return false;
- if (req_l->access_Command_req ())
- time_signature_req_l_ = req_l->access_Command_req ()->access_Time_signature_change_req ();
+ if (dynamic_cast <Command_req *> (req_l))
+ time_signature_req_l_ = dynamic_cast <Time_signature_change_req *> (req_l);
if (time_signature_req_l_)
return true;
{
for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
{
- if (i->access_Translator_group ())
+ if (dynamic_cast <Translator_group *> (i.ptr ()))
return false;
}
for (int i=0; i < accepts_str_arr_.size (); i++)
{
Translator *t = output_def_l ()->find_translator_l (accepts_str_arr_[i]);
- if (!t || !t->access_Translator_group ())
+ if (!t || !dynamic_cast <Translator_group *> (t))
continue;
- accepted_arr.push (t->access_Translator_group ());
+ accepted_arr.push (dynamic_cast <Translator_group *> (t));
}
// start at 1. The first one (index 0) will be us.
for (int i=0; i < path.size (); i++)
{
- Translator_group * new_group = path[i]->clone ()->access_Translator_group ();
+ Translator_group * new_group = dynamic_cast<Translator_group*>(path[i]->clone ());
current->add_translator (new_group);
current = new_group;
}
Link_array<Translator_group> groups;
for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
{
- if (i->access_Translator_group ())
- groups.push (i->access_Translator_group ());
+ if (dynamic_cast <Translator_group *> (i.ptr ()))
+ groups.push (dynamic_cast <Translator_group *> (i.ptr ()));
}
return groups;
}
Link_array<Translator> groups;
for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
{
- if (!i->access_Translator_group ())
+ if (!dynamic_cast <Translator_group *> (i.ptr ()))
groups.push (i.ptr ());
}
return groups;
warning (_f ("can't find or create `%s\'", accepts_str_arr_[0]));
t = this;
}
- Translator_group * g= t->clone ()->access_Translator_group ();
+ Translator_group * g= dynamic_cast <Translator_group*>(t->clone ());
add_translator (g);
if (!g->is_bottom_translator_b ())