2004-02-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/include/translator-group.hh: move Music_output_def member
+ to Global_translator.
+
* scripts/lilypond-book.py (do_file): fix latex output.
* VERSION: release 2.1.20
Global_translator::Global_translator ()
{
+ output_def_ = 0;
+}
+
+Music_output_def*
+Global_translator::get_output_def () const
+{
+ return output_def_;
}
void
DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
static bool has_interface (Grob*);
-
};
void set_acceptor (SCM accepts, bool add);
Link_array<Context_def> path_to_acceptable_translator (SCM type_string, Music_output_def* odef) const;
- Translator_group * instantiate (Music_output_def*, SCM extra_ops);
+ Translator_group * instantiate (SCM extra_ops);
SCM to_alist () const;
bool is_alias (SCM) const;
class Global_translator : public virtual Translator_group
{
PQueue<Moment> extra_mom_pq_;
+ Music_output_def* output_def_;
+ friend class Music_output_def;
public:
VIRTUAL_COPY_CONS (Translator);
- Moment final_mom_;
- Moment prev_mom_;
- Moment now_mom_;
Global_translator ();
int get_moments_left () const;
virtual void one_time_step ();
virtual void finish ();
virtual void start ();
-
+ virtual Music_output_def* get_output_def () const;
virtual Moment now_mom () const;
-
+ Moment final_mom_;
+ Moment prev_mom_;
+ Moment now_mom_;
protected:
-
};
public Engraver_group_engraver, public Global_translator
{
System *system_;
- int breaks_;
-
+ int breaks_; // used for stat printing
Link_array<Grob> elems_;
-
Paper_column* command_column_;
Paper_column* musical_column_;
+ Paper_score * pscore_;
+
void make_columns ();
void set_columns (Paper_column*,Paper_column*);
void typeset_all ();
-
-public:
- TRANSLATOR_DECLARATIONS(Score_engraver);
- Paper_score * pscore_;
-
- void forbid_breaks ();
-
- virtual Music_output *get_output ();
-protected:
+protected:
+ /* Global_translator */
virtual void prepare (Moment);
virtual void finish ();
virtual void one_time_step ();
- virtual int get_depth () const { return Global_translator::get_depth ();}
-protected:
/* Engraver_group_engraver interface */
virtual void acknowledge_grob (Grob_info);
-
virtual bool try_music (Music*);
virtual void initialize ();
virtual void finalize ();
virtual void announce_grob (Grob_info);
virtual void typeset_grob (Grob*elem);
-
virtual void stop_translation_timestep ();
+
+public:
+ TRANSLATOR_DECLARATIONS(Score_engraver);
+ void forbid_breaks ();
+ virtual Music_output *get_output ();
};
#endif /* SCORE_ENGRAVER_HH */
virtual int get_tempo () const;
virtual void play_element (Audio_element* p);
virtual Music_output *get_output ();
-
private:
void header (Midi_stream&);
hierarchically grouped Translators
*/
class Translator_group : public virtual Translator {
-
- Scheme_hash_table *properties_dict () const;
+public:
+ String id_string_;
+private:
int iterator_count_;
-
friend class Interpretation_context_handle;
+
+ Scheme_hash_table *properties_dict () const;
SCM add_translator (SCM, Translator*);
-
protected:
~Translator_group ();
virtual SCM get_simple_trans_list ();
+
public:
void execute_pushpop_property (SCM prop, SCM sym, SCM val);
SCM internal_get_property (SCM name_sym) const;
SCM properties_as_alist () const;
-
void unset_property (SCM var_sym);
void internal_set_property (SCM var_sym, SCM value);
Translator_group *where_defined (SCM name_sym) const;
-
- String id_string_;
String context_name () const;
- VIRTUAL_COPY_CONS (Translator);
Translator_group (Translator_group const &);
Translator_group ();
void add_fresh_group_translator (Translator *trans);
void add_used_group_translator (Translator *trans);
- int get_depth () const;
bool is_bottom_context () const;
bool is_removable () const;
void terminate_translator (Translator*r);
Translator *remove_translator (Translator*trans);
void check_removal ();
Translator_group *find_existing_translator (SCM context_name, String id);
- Translator_group *find_create_translator (SCM context_name, String id, SCM ops);
- Link_array<Translator_group> path_to_acceptable_translator (SCM alias,
- Music_output_def*) const;
+ Translator_group *find_create_translator (SCM context_name,
+ String id, SCM ops);
+ Link_array<Translator_group>
+ path_to_acceptable_translator (SCM alias,
+ Music_output_def*) const;
Translator_group*get_default_interpreter ();
-
+ VIRTUAL_COPY_CONS (Translator);
public:
bool try_music_on_nongroup_children (Music *m);
protected: // should be private.
SCM simple_trans_list_;
friend class Context_def;
- // ugir.
- // friend SCM Translator_group::get_simple_trans_list ();
-
-
public:
Global_translator * top_translator () const;
TRANSLATOR_DECLARATIONS(Translator);
smobify_self ();
}
-Music_iterator::Music_iterator (Music_iterator const& src)
+Music_iterator::Music_iterator (Music_iterator const& )
{
assert (false);
}
if (!t)
error (_f ("can't find `%s' context", "Score"));
- Translator_group * tg = t->instantiate (this, SCM_EOL);
+ Translator_group * tg = t->instantiate (SCM_EOL);
+ dynamic_cast<Global_translator*> (tg)->output_def_ = this;
+
tg->initialize ();
return dynamic_cast <Global_translator *> (tg);
unsmob_context_def (definition_)->apply_default_property_operations (this);
- assert (dynamic_cast<Paper_def *> (output_def_));
assert (!daddy_trans_);
pscore_ = new Paper_score;
- pscore_->paper_ = dynamic_cast<Paper_def*> (output_def_);
+ pscore_->paper_ = dynamic_cast<Paper_def*> (get_output_def ());
SCM props = get_property ("System");
return o;
}
+
bool
Score_engraver::try_music (Music*r)
{
Score_performer::initialize ()
{
unsmob_context_def (definition_)->apply_default_property_operations (this);
- assert (dynamic_cast<Midi_def *> (output_def_));
performance_ = new Performance;
- performance_->midi_ = dynamic_cast<Midi_def*> (output_def_);
+ performance_->midi_ = dynamic_cast<Midi_def*> (get_output_def ());
Translator_group::initialize ();
}
while (!global);
Moment now = global->now_mom_;
- Moment dt = now - global -> prev_mom_;
+ Moment dt = now - global->prev_mom_;
if (dt < Moment (0))
{
programming_error ("Moving backwards in time");
Translator_group *
-Context_def::instantiate (Music_output_def* md, SCM ops)
+Context_def::instantiate (SCM ops)
{
Translator * g = get_translator (translator_group_type_);
g = g->clone ();
Translator_group *tg = dynamic_cast<Translator_group*> (g);
- tg->output_def_ = md;
tg->definition_ = self_scm ();
SCM trans_names = get_translator_names (ops);
SCM ops = (i == path.size () -1) ? operations : SCM_EOL;
Translator_group * new_group
- = path[i]->instantiate (output_def_, ops);
+ = path[i]->instantiate (ops);
if (i == path.size () -1)
{
return hebbes_b ;
}
-int
-Translator_group::get_depth () const
-{
- return (daddy_trans_) ? daddy_trans_->get_depth () + 1 : 0;
-}
-
void
Translator_group::terminate_translator (Translator*r)
{
warning (_f ("can't find or create: `%s'", ly_symbol2string (nm).to_str0 ()));
t = unsmob_context_def (this->definition_);
}
- Translator_group *tg = t->instantiate (output_def_, SCM_EOL);
+ Translator_group *tg = t->instantiate (SCM_EOL);
add_fresh_group_translator (tg);
if (!tg->is_bottom_context ())
return tg->get_default_interpreter ();
Music_output_def *
Translator::get_output_def () const
{
- return output_def_;
+ return
+ (daddy_trans_)
+ ? daddy_trans_->get_output_def ()
+ : 0;
}
SCM