constructor from Music_iterator. Changes throughout.
* lily/include/music-iterator.hh (class Music_iterator): remove
Music_iterator::skip and Music_iterator::get_pending_events from
interface. Rename report_to -> get_outlet
* lily/auto-change-iterator.cc: move contents from
new-auto-change-iterator.cc from
2004-02-04 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/simultaneous-music-iterator.cc: remove clone() and copy
+ constructor from Music_iterator. Changes throughout.
+
* lily/include/music-iterator.hh (class Music_iterator): remove
Music_iterator::skip and Music_iterator::get_pending_events from
interface. Rename report_to -> get_outlet
@code{--safe-mode}, the user's Guile expressions are evaluated in a
safe environment and file inclusion is not allowed.
-Be warned that a DOS attack using Guile, @TeX{} or PostScript is
-rather easy.
+Warning: this does protect against denial-of-service attacks using
+Guile, @TeX{} or PostScript.
(This feature is still experimental.)
class Apply_context_iterator : public Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
protected:
virtual void process (Moment);
class Auto_change_iterator : public Music_wrapper_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Auto_change_iterator ();
class Bar_check_iterator : Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS(Bar_check_iterator);
virtual void process (Moment);
Bar_check_iterator( );
DECLARE_SCHEME_CALLBACK(constructor, ());
child_iter_ = 0;
}
-Chord_tremolo_iterator::Chord_tremolo_iterator (Chord_tremolo_iterator const &src)
- : Music_iterator (src)
-{
- factor_ = src.factor_;
- child_iter_ = 0;
- if (src.child_iter_)
- {
- child_iter_ = src.child_iter_->clone ();
- scm_gc_unprotect_object (child_iter_->self_scm());
- }
-}
-
void
Chord_tremolo_iterator::do_quit()
{
class Context_specced_music_iterator : public Music_wrapper_iterator
{
public:
- VIRTUAL_COPY_CONS(Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor,());
virtual void construct_children ();
};
{
}
-Event_chord_iterator::Event_chord_iterator (Event_chord_iterator const &src)
- : Simple_music_iterator (src)
-{
-}
-
Translator_group*
Event_chord_iterator::get_req_translator ()
{
void
-Event_chord_iterator::process (Moment )
+Event_chord_iterator::process (Moment m)
{
if (last_processed_mom_ < Moment (0))
{
mus->origin ()->warning (_f ("Junking event: `%s'", mus->name()));
}
}
+ Simple_music_iterator::process (m);
}
IMPLEMENT_CTOR_CALLBACK (Event_chord_iterator);
if (alternative_iter_)alternative_iter_->quit();
}
-Folded_repeat_iterator::Folded_repeat_iterator (Folded_repeat_iterator const &src)
- : Music_iterator (src)
-{
- main_iter_ = 0;
- alternative_iter_ = 0;
- main_length_mom_ = src.main_length_mom_;
-
- if (src.alternative_iter_)
- alternative_iter_ = src.alternative_iter_->clone ();
- if (src.main_iter_)
- main_iter_ = src.main_iter_->clone ();
-
- if (main_iter_)
- scm_gc_unprotect_object (main_iter_->self_scm());
- if (alternative_iter_)
- scm_gc_unprotect_object (alternative_iter_->self_scm());
-}
-
Moment
Folded_repeat_iterator::pending_moment () const
{
class Change_iterator : public Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
/* constructor is public */
virtual void process (Moment);
DECLARE_SCHEME_CALLBACK(constructor, ());
class Chord_tremolo_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Chord_tremolo_iterator ();
Chord_tremolo_iterator (Chord_tremolo_iterator const & );
enum { NONE_DONE, START_DONE, END_DONE } status_;
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Event_chord_iterator ();
Event_chord_iterator (Event_chord_iterator const&);
class Folded_repeat_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Folded_repeat_iterator (Folded_repeat_iterator const &src);
class Grace_iterator : public Music_wrapper_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
virtual void process (Moment);
DECLARE_SCHEME_CALLBACK(constructor, ());
Moment pending_moment () const;
Moment start_mom_;
DECLARE_SMOBS (Music_iterator,dummy);
+ Music_iterator (Music_iterator const&);
public:
- VIRTUAL_COPY_CONS (Music_iterator);
Moment music_get_length () const;
Moment music_start_mom () const;
Music_iterator ();
- Music_iterator (Music_iterator const&);
/**
Do the reporting. Will try MUSIC_L_ in its own translator first,
class Music_wrapper_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Music_wrapper_iterator ();
- Music_wrapper_iterator (Music_wrapper_iterator const&);
virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
virtual Moment pending_moment () const;
virtual void do_quit();
virtual bool ok () const;
- virtual SCM get_pending_events (Moment)const;
virtual bool run_always () const;
protected:
virtual void process (Moment);
class Output_property_music_iterator : public Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
/* construction */
protected:
class Percent_repeat_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Percent_repeat_iterator ();
- Percent_repeat_iterator (Percent_repeat_iterator const & );
protected:
virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
class Property_iterator : public Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
DECLARE_SCHEME_CALLBACK(once_finalization, (SCM, SCM ));
class Property_unset_iterator : public Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
protected:
virtual void process (Moment);
class Push_property_iterator : public Simple_music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
DECLARE_SCHEME_CALLBACK(once_finalization, (SCM, SCM));
protected:
{
public:
DECLARE_SCHEME_CALLBACK(constructor, ());
- VIRTUAL_COPY_CONS (Music_iterator);
protected:
virtual void process (Moment);
};
public:
Grace_fixup * grace_fixups_;
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Sequential_iterator ();
Sequential_iterator (Sequential_iterator const&);
class Sequential_music_iterator : public Sequential_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
private:
virtual SCM get_music_list()const;
Moment last_processed_mom_;
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
Simple_music_iterator ();
- Simple_music_iterator (Simple_music_iterator const &);
virtual void process (Moment);
virtual bool ok ()const;
virtual Moment pending_moment ()const;
class Simultaneous_music_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
Simultaneous_music_iterator ();
Simultaneous_music_iterator (Simultaneous_music_iterator const&);
virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
class Time_scaled_music_iterator : public Music_wrapper_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
DECLARE_SCHEME_CALLBACK(constructor, ());
/* construction */
protected:
class Lyric_combine_music_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
Lyric_combine_music_iterator ();
Lyric_combine_music_iterator (Lyric_combine_music_iterator const&src);
DECLARE_SCHEME_CALLBACK(constructor, ());
lyric_iter_->quit();
}
-Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src)
- : Music_iterator (src)
-{
- lyric_iter_ = 0;
- music_iter_ = 0;
-
- if (src.lyric_iter_)
- lyric_iter_ = src.lyric_iter_->clone ();
- if (src.music_iter_)
- music_iter_ = src.music_iter_->clone ();
-
- if (lyric_iter_)
- scm_gc_unprotect_object (lyric_iter_->self_scm());
- if (music_iter_)
- scm_gc_unprotect_object (music_iter_->self_scm());
-}
-
Music_iterator*
Lyric_combine_music_iterator::try_music_in_children (Music *m) const
{
Music_iterator::Music_iterator (Music_iterator const& src)
{
- handle_ = *src.handle_.clone ();
- music_ = src.music_;
- music_length_ = src.music_length_;
- start_mom_ = src.start_mom_;
- smobify_self ();
+ assert (false);
}
Music_iterator::~Music_iterator ()
child_iter_ =0;
}
-Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src)
- : Music_iterator (src)
-{
- child_iter_ = 0;
- if (src.child_iter_)
- {
- child_iter_ = src.child_iter_->clone () ;
- scm_gc_unprotect_object (child_iter_->self_scm());
- }
-}
-
void
Music_wrapper_iterator::do_quit()
{
class New_lyric_combine_music_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
New_lyric_combine_music_iterator ();
New_lyric_combine_music_iterator (New_lyric_combine_music_iterator const&src);
DECLARE_SCHEME_CALLBACK(constructor, ());
lyric_iter_->quit();
}
-New_lyric_combine_music_iterator::New_lyric_combine_music_iterator (New_lyric_combine_music_iterator const & src)
- : Music_iterator (src)
-{
- lyric_iter_ = 0;
-
- if (src.lyric_iter_)
- lyric_iter_ = src.lyric_iter_->clone ();
-
- if (lyric_iter_)
- scm_gc_unprotect_object (lyric_iter_->self_scm());
-
- music_context_ = src.music_context_;
- lyric_iter_ = src.lyric_iter_;
-
-
- assert (false); // shouldn't copy, really.
-}
Music_iterator*
class New_pc_iterator : public Music_iterator
{
public:
- VIRTUAL_COPY_CONS (Music_iterator);
New_pc_iterator ();
DECLARE_SCHEME_CALLBACK(constructor, ());
shared_.set_translator (0);
}
-New_pc_iterator::New_pc_iterator (New_pc_iterator const &src)
- : Music_iterator (src)
-{
- first_iter_ = 0;
- second_iter_ = 0;
-
- if(src.first_iter_)
- first_iter_ = src.first_iter_->clone ();
- if (src.second_iter_)
- second_iter_ = src.second_iter_->clone ();
- split_list_ = src.split_list_;
-
- if (first_iter_)
- scm_gc_unprotect_object (first_iter_->self_scm());
- if (second_iter_)
- scm_gc_unprotect_object (second_iter_->self_scm());
-}
Moment
New_pc_iterator::pending_moment () const
if (child_iter_)
child_iter_->quit();
}
-Percent_repeat_iterator::Percent_repeat_iterator (Percent_repeat_iterator const & p)
- : Music_iterator (p)
-{
- child_iter_ = 0;
- finish_mom_ = p.finish_mom_ ;
-
- if (p.child_iter_)
- {
- child_iter_ = p.child_iter_->clone ();
- scm_gc_unprotect_object (child_iter_->self_scm());
- }
-}
bool
Percent_repeat_iterator::ok () const
{
SCM eprop = get_music ()->get_mus_property ("grob-property");
get_outlet ()->execute_pushpop_property (sym, eprop, SCM_UNDEFINED);
- }
+ }
Simple_music_iterator::process (m);
}
}
-Sequential_iterator::Sequential_iterator (Sequential_iterator const &src)
- : Music_iterator (src)
-{
- grace_fixups_ = copy_grace_fixups (src.grace_fixups_);
- cursor_ = src.cursor_;
- list_ = src.cursor_;
- here_mom_ = src.here_mom_;
- iter_ = 0;
- if (src.iter_)
- {
- iter_ = src.iter_->clone ();
- scm_gc_unprotect_object (iter_->self_scm());
- }
-}
void
Sequential_iterator::derived_mark ()const
last_processed_mom_ = -1;
}
-Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src)
- : Music_iterator (src)
-{
- last_processed_mom_ = src.last_processed_mom_;
-}
-
bool
Simple_music_iterator::ok ()const
{
void
-Simple_music_iterator::process (Moment )
+Simple_music_iterator::process (Moment m)
{
/*
don't do try_music (), since it would make the function useless for
- base classes */
+ base classes
+ */
+ last_processed_mom_ = m;
}
IMPLEMENT_CTOR_CALLBACK (Simple_music_iterator);
children_list_ = SCM_EOL;
}
-Simultaneous_music_iterator::Simultaneous_music_iterator (Simultaneous_music_iterator const& src)
- : Music_iterator (src)
-{
- separate_contexts_b_
- = src.separate_contexts_b_;
- children_list_ = SCM_EOL;
-
- SCM children_list = SCM_EOL;
- SCM *tail = &children_list;
- for (SCM s = src.children_list_; gh_pair_p (s); s = gh_cdr(s))
- {
- Music_iterator *i = unsmob_iterator (gh_car (s));
- SCM cl = i->clone ()->self_scm();
- *tail = scm_cons (cl, *tail);
- tail = SCM_CDRLOC (*tail);
- scm_gc_unprotect_object (cl);
- }
-
- children_list_ = children_list;
- scm_remember_upto_here_1 (children_list);
-}
void
Simultaneous_music_iterator::derived_mark()const
{
public:
DECLARE_SCHEME_CALLBACK(constructor, ());
- VIRTUAL_COPY_CONS (Music_iterator);
protected:
virtual SCM get_music_list () const;
};
{
public:
DECLARE_SCHEME_CALLBACK(constructor, ());
- VIRTUAL_COPY_CONS (Music_iterator);
Volta_repeat_iterator();
void add_repeat_command (SCM);